は、次のコードを考えてみましょう:リファレンスに一時的にバインディングするには、C++でコピーコンストラクタが必要ですか?
このコードは、GCC 4.7.2と罰金コンパイルしますが、次のエラーでのVisual C++ 2010でコンパイルに失敗します。
test.cc(8) : error C2248: 'A::A' : cannot access private member declared in class 'A'
test.cc(2) : see declaration of 'A::A'
test.cc(1) : see declaration of 'A'
だから、それが持っていることが必要です一時的に参照にバインドするときにアクセスできるコピーコンストラクタ
これが私の前の質問に多少関連している:
Is there a way to disable binding a temporary to a const reference?
はい、コピーctorはプライベートであり、意図的に実装されていません。 – vitaut
ちょうど 'A()を試しましたか? '関数内から戻り値にコピーコンストラクタをコピーする必要がある可能性があります。 –
Visual C++ 2012はコードを受け入れます。 –