Hi, On Thu, 18 Feb 2016, Richard Smith wrote:
> >> An empty type is a type where it and all of its subobjects > >> (recursively) are of class, structure, union, or array type. No > >> memory slot nor register should be used to pass or return an object > >> of empty type. > > > > The trivially copyable is gone again. Why is it not necessary? > > The C++ ABI doesn't defer to the C psABI for types that aren't > trivially-copyable. See > http://mentorembedded.github.io/cxx-abi/abi.html#normal-call Hmm, yes, but we don't want to define something for only C and C++, but language independend (so far as possible). And given only the above language I think this type: struct S { S() {something();} }; would be an empty type, and that's not what we want. "Trivially copyable" is a reasonably common abstraction (if in doubt we could even define it in the ABI), and captures the idea that we need well (namely that a bit-copy is enough). Ciao, Michael.