Definition? Well yes. They are always declared (explicitly or implicitly by the compiler), but they are only defined by the compiler when / if you really use them. Do not use them - and the compiler will not detect them.
Of course, if you "forbid compilers to determine ..." means "prevent compilers from successfully determining ...", that is, if you want the implicit definition attempt to fail at compile time, you can achieve that by adding an unspecific constructive and / or an unassigned subobject to your class (for example, a base or a member with a private copy constructor and a private assignment operator, for example).
AnT
source share