これは、unique_ptrを使用するコードです。
struct Foo{
Foo(){std::cout << "Ctor called\n";}
~Foo(){std::cout << "Dtor called\n";}
void bar(){std::cout << "bar called\n";}
}
int main(){
unique_ptr<Foo> up(new Foo);
{
vector<unique_ptr<Foo>> v;
v.push_back(move(up));
}
up->bar();
return 0;
}
実行の出力は次のとおりです。
Ctor called
Dtor called
bar called
bar()
私が理解したことから、 ingのためにup
破壊されることになっていたので、私は呼び出しが失敗することを期待していました。私は正しく理解していないようです。誰かが私に何が起こっているのかを教えてもらえますか?(g ++ 4.7.0)v
move