VC2010 を使用してデバッグ モードでビルドすると、このコピー コンストラクターが呼び出されない理由がよくわかりません。
class SomeClass
{
public:
SomeClass(int meaningless){}
SomeClass(const SomeClass& sc)
{
cout << "Copy Constructor invoked!" << endl;
}
};
int main()
{
SomeClass test(SomeClass(9999)); // Copy constructor not invoked.
}
値を返さないので、これは RVO とは関係ないと思います。
さらに興味深いことに、コピー コンストラクターをプライベートにすると、コンパイラーはコピー コンストラクターを省略してもコンパイルすらしません。