私は移動セマンティクスのいくつかのテストを行っていました、そして私はこれを試しました:
class A{
public:
A(){printf("A CTOR\n");}
A(A&) {printf("A CTOR by copy\n");}
A(A&&){printf("A CTOR by universal reverence\n");}
};
A&& create(){
A v;
return std::move(v);
}
auto x{ create() };//this does not compile
float d[]{1.2,1.3,5,6};//this does compile
次のエラーが発生します。
error C3086: cannot find 'std::initializer_list': you need to #include <initializer_list>
初期化リスト機能がCTP2012novでVC11に追加されたため、わかりません。これは、stdlibの更新を待たなければならないためですか?
Scott meyersのスライドからコピーしたので、コードは正しいと思います:Move Semantics、Rvalue References、PerfectForwarding。
ご協力ありがとうございました。ちなみに、CTORにコピーで「const」を追加しなかったため 、偽のコピーが発生しました。 一番