コードを検討する
auto p = new T( U(std::move(v)) );
その場合、初期化子はU(std::move(v))
. T( U(std::move(v)) )
スローしないとしましょう。基になるメモリ割り当ての後に初期化子が評価される場合、コードは強力な例外セーフになります。そうでなければ、そうではありません。メモリ割り当てv
がスローされた場合、既に移動されています。したがって、メモリ割り当てと初期化子の評価の間の相対的な順序に興味があります。それは定義されていますか、未指定ですか、それとも何ですか?