Всякий раз, когда временный объект создается с единственной целью копирования и последующего уничтожения, компилятору разрешается полностью удалить временный объект и построить результат непосредственно у получателя (т. е. непосредственно в объекте, который должен получать копия). В вашем случае
MyClass MyObj(MyClass(1, 2));
можно преобразовать в
MyClass MyObj(1, 2);
, даже если конструктор копирования имеет побочные эффекты.
Этот процесс называется исключение операции копирования . Он описан в 12.8 / 15 в стандарте языка.