* H. J. Lu: > I am proposing to update Intel386, x86-64 and IA MCU psABIs to specify > how to pass/return empty struct: > > 1. "collection". A collection is a structure, union or C++ class. > 2. "empty collection". An empty collection is: > a. A collection without member. Or > b. A collection with only empty collections. Or > c. An array of empty collections. > 3. "empty record". An empty record is Plain Old Data (POD) for the purpose > of layout and > a. A collection without member. Or > b. A collection with only empty collections. > 4. No memory slot nor register should be used to pass or return an object of > empty collection.
“Aggregate” may be the more standard term instead of collection. I think you mean “empty record” under 4. Any syntactical array argument (at the C level) is should be passed as a pointer. The language appears to change that. For 2., static members and non-data members do not count. Does the definition of POD vary between C++ standards? Then the calling convention would vary as well, which is probably not what we want. How do existing C++ compilers implement empty array members (an extension)? Does the type of such members affect whether a class is a standard-layout class? Florian