C++相談室 part94
■ このスレッドは過去ログ倉庫に格納されています
0446営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 22:14:39.78VC2010 で、
struct Hoge {
Hoge(Hoge&& rhs) {
*this = rhs; // 1
}
Hoge& operator=(const Hoge& rhs); // 2
Hoge& operator=(Hoge&& rhs); //3
}
1 の箇所で、3 が呼ばれるかと思ったら、2 が呼ばれてしまいました。
これは、規格通りの動作なのでしょうか?
もしそうなら、右辺値参照の operator= にもっていくには、
コンストラクタの引数に対して std::move() すればいいのだと思うのですが、
どうして引数の型が && なのに、再度 std::move しなければいけないのか
理由を知っていれば教えて下さい。
■ このスレッドは過去ログ倉庫に格納されています