次のプログラムが出力 "cpy: 0" を生成する理由を誰かに説明してもらえますか (少なくとも g++ 4.5.2 でコンパイルした場合):
#include<iostream>
struct A {
bool cpy;
A() : cpy (false) {
}
A (const A & a) : cpy (true) {
}
A (A && a) : cpy (true) {
};
};
A returnA () { return A (); }
int main() {
A a ( returnA () );
std::cerr << "cpy: " << a.cpy << "\n";
}
この例の一見奇妙な結果を理解しようとしたときに疑問が生じました:定数データメンバーまたは参照メンバーを持つクラスの ctor を移動する