誰かがBがコンパイルされない理由を説明することはできますか?変数が既にrvalue refなので、std :: moveが必要な理由は分かりません。rvalue refsとstd :: move
struct A {
int x;
A(int x=0) : x(x) {}
A(A&& a) : x(a.x) { a.x = 0; }
};
struct B : public A {
B() {}
B(B&& b) : A(b) {} // compile error with g++-4.7
};
struct C : public A {
C() {}
C(C&& c) : A(std::move(c)) {} // ok, but why?
};
答えを受け入れる:
は、私は非常に有用(もともとビャーネ・ストロヴストルップによって発明)以下の図を見つけて下さい! – Walter