[...] In my opinion, the right thing here is to have uniform
semantics with a non-zero size for objects that are stored or
retrieved from memory.
Which way is more uniform seems to depend on your POV, and base's choice has been made a long time ago, so that ship has sailed...
If I were the owner of the base package I would do that.
Then I'm quite happy that you aren't. ;-) API breakages should have a *very* good reason, not just that it makes life easier for a single library.
This optimization in my opinion is a micro-optimization which
is irrelevant in the larger scheme of things. If someone wants to
optimise for this case there could be ways to do that. But again it is
subjective - this vs that.
IIRC there were no deep thoughts or arguments about optimizations at all at that time, but I still find the Storable () instance OK in its current state today.