Начиная с C ++ 17
MyClass c( MyClass { } );
всегда будет вызывать
template< typename ... T > MyClass( T&& ... );
Причина этого в том, что временного объекта больше нет. Вместо этого инициализация исключается, и c
напрямую создается из инициализатора «временного». Это означает, что у вас действительно есть
MyClass c{};
Это хорошо, хотя вместо того, чтобы строить и двигаться, мы просто создаем, что является выигрышем в производительности.