The IReader::read_many_memberwise will call IReader::read_many by default, which may cause subclasses that need to implement IReader::read_many_memberwise but forget to do so to behave strangely.
So the default implementation of read_many_memberwise should be changed to raising an exception.