On Sat, Feb 20, 2016 at 9:47 PM, Richard Smith <rich...@metafoo.co.uk> wrote: > On 20 Feb 2016 6:54 p.m., "H.J. Lu" <hjl.to...@gmail.com> wrote: >> >> On Sat, Feb 20, 2016 at 4:57 PM, Matthijs van Duin >> <matthijsvand...@gmail.com> wrote: >> > On 20 February 2016 at 23:35, H.J. Lu <hjl.to...@gmail.com> wrote: >> >> Can a compiler tell if a copy constructor or destructor is trivial >> >> from the class declaration without function body? >> > >> > Yes, the mere presence of the declaration suffices to render it >> > non-trivial (unless explicitly declared "= default" like I did with >> > the default constructor, in which case there's no function body). >> >> How about this? >> >> An empty type is a type where it and all of its subobjects (recursively) >> are of class, structure, union, or array type. An empty type may only >> have static member functions, default constructor, default copy >> constructor, default copy assignment operator or default destructor. > > No, that's the wrong rule still. Please leave the C++ rule here to the C++ > ABI rather than trying to reinvent it. Whether a type is empty is completely > orthogonal to whether it must be passed through memory for C++ ABI / > semantics reasons.
What is the correct wording? The last one: An empty type is a type where it and all of its subobjects (recursively) are of class, structure, union, or array type. doesn't cover "trivially-copyable". -- H.J. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits