Does the fact that an implicitly declared constructor(default, copy, move) or destructor is trivial - triggers the compiler to define / not to define it?
cppreference says yes, but standard doesn't mention the dependence in $12.1
Both gcc and clang define implicitly declared default destructor, copy constructor independently from their being trivial or not.
If the implicitly-declared copy constructor is neither deleted nor trivial, it is defined (that is, a function body is generated and compiled) by the compiler if odr-used.
(same for move, and I just fixed default where "odr used" was omitted. Where does it link it to triviality?)
"is neither deleted nor trivial, it is defined"
Does it mean that copy/move constructor copy/move assignment operator won't be defined if it's trivial?
Now it's irrelevant, but I downloaded the page on default constructor from cppreference some time ago and it said "If the implicitly-declared default constructor is not deleted or trivial, it's defined" .
As I understand, that page is already fixed.