1
このコードの動作は明確に定義されていますか?返される参照は常に正しいでしょうか? Bar :: method()コールは常にうまくいくのでしょうか?ローカル参照されていないポインタへの参照の返却
struct Bar
{
void method() {...};
};
struct Foo
{
static unique_ptr<Bar> bar_ptr;
static Bar& get_reference()
{
return *bar_ptr;
}
};
unique_ptr<Bar> Foo::bar_ptr = nullptr;
int main()
{
Foo::bar_ptr = make_unique<Bar>();
Foo::get_reference().method();
return 0;
}
はい、どうしてですか?構築された 'Bar'のインスタンスは、' main'が復帰した後に破棄されます。 – Ivan
「いつも」の意味に依存します。 'make_unique'を呼び出す前と' main() 'が終了した後のいつかは間違っていません。 – Slava
バーのインスタンスが破棄されるまでリファレンスが正しいと私は正しいですか? – Victor