On 6 March 2015 at 23:58, Jason Merrill <ja...@redhat.com> wrote: > On 01/19/2015 11:28 AM, Ville Voutilainen wrote: >> >> * class.c (check_field_decls): If any field is volatile, make >> the class type have complex copy/move operations. > > > Discussion on the cxx-abi list points out that this breaks ABI compatibility > between C and C++, and is therefore unacceptable.
So.. just to clarify that we're on the same page.. making volatile-qualified types non-trivially copyable is ok, but making wrappers of volatile-qualified types non-trivially copyable is not ok? That's easily doable implementation-wise, but it makes me question the overall approach and its consistency. Is there a way to indicate that from the point of C++ a type is not trivially copyable without changing the "complexness" of a copy operation, ultimately without changing ABI?