I always assumed that the compiler will automatically generate copy constructors and copy operators in C++ if one is not specified. Is this also the case for move constructor/move operator?
In other words, do we need to specify a move constructor and move operator to get benefits of move semantics. OR are they provided by the compiler by default?
I was reading some articles recently that state that sometimes move semantics will break if there is a custom destructor declared in a class.
When does it make sense to actually write a move constructor/move operator?