のは、我々は次のコードスニペットを持っていると仮定しましょう:関数パラメータの内部実行順序は定義されていますか?
void foo(std::unique_ptr<Data> p1, std::unique_ptr<Data> p2){
bar(p1);
bar(p2);
}
int main(){
foo(std::unique_ptr<Data>{new Data}, std::unique_ptr<Data>{new Data});
}
質問は次のとおりです。メモリは、常にこのコードを実行している時に解放されます(関係なく、何が起こりますか)?
標準では、関数の引数であるステートメントの順序に依存することはできませんが、内部関数呼び出し/メモリ割り当てなどはどうですか?ここでも重要ですか?
投げることができるコンストラクタを持つことは悪い習慣ではありませんか? – user3853544
@ user3853544 'operator new'は投げることができます – Caleth
@ user3853544依存しています:オブジェクトを有効な状態にしたい(構築せずに、それらが有効であるかどうかを確認する)場合は、このために使用することができます。 – Patryk