C++17では、この式の x はデフォルトコンストラクタにより直接初期化される。この式では、オブジェクトのコピーやムーブは一切発生しない。この挙動はC++標準規格で厳密に定義されており1、たとえ T がコピー/ムーブ不可能な型であっても、問題なくコンストラクトすることができる2。 // コピー構築やムーブ構築ができない型 class T { public: T() = default; T(const T&) = delete; T(T&&) = delete; T& operator=(const T&) = delete; T& operator=(T&&) = delete; }; int main() { T x = T(T(T())); // C++14ではエラー、C++17ではOK }