
Scott, Many thanks for your crash-course on aggregates and your patence with me. Much and truly appreciated. I had to dig the Standard up for a "refreshment". It's embarassing but I admit I all forgot about that "C" stuff tucked away in a corner of C++. I never thought I'd come across it ever again. Kudos to you for your effort. I am coming to appreciate your implementation. It's very impressive how efficiently you managed to cut off "all the excess" and how far you've got without C++ "perks and whistles". I am sure it had its uses. That said, I feel aggregates' limitations are far too restrictive for a full-fledged implementation (and especially the interface). Best, Vladimir.
... It comes from making it a POD, as all PODs are also aggregates.
8.5.1 Aggregates [dcl.init.aggr]
An aggregate is an array or a class (clause 9) with no user-declared constructors (12.1), no private or protected non-static data members (clause 11), no base classes (clause 10), and no virtual functions (10.3). When an aggregate is initialized the initializer can contain an initializer-clause consisting of a brace-enclosed, comma-separated list of initializer-clauses for the members of the aggregate, written in increasing subscript or member order. If the aggregate contains subaggregates, this rule applies recursively to the members of the subaggregate.