With your compiler and options it is temporarily canceled (optimized), which is allowed.
Thus, the temporary does not exist.
Thus, there are no pairs of missing constructors and destructors.
It is also worth noting that copy and move constructors are the only constructors in which the compiler is allowed to assume that the constructor has no side effects, even if it knows better.
C ++ 11 ยง12.8 / 31 :
" When certain implementation criteria are met, it is allowed to omit the copy / move construct of the class object, even if the copy / move constructor and / or destructor for the object have side effects. [& Hellip;]
source share