[class.copy]/12 in C++14:
A copy/move constructor for class X is trivial if it is not user-provided, its parameter-type-list is equivalent to the parameter-type-list of an implicit declaration, and if
otherwise the copy/move constructor is non-trivial.
I can see that the sentence above was erased in N4606, but I couldn't find anything in C++ Standard Core Language Active Issues, Revision 96 to justify its removal from C++14.
This is a result of CWG 2171. The removed text only changes the meaning in one case:
struct X {
X(X& ) = default; // not user-provided
// parameter-type-list differs from implicit declaration's X const&
// wasn't trivial before, is trivial now
};
But whether or not this copy constructor is trivial is a separate question of whether or not it is actually invokable, so the original text was deemed inconsistent with the usual intent of the standard and hence removed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With