私がこの架空の、奇妙で直感的でない状況にあるとしましょう
#include <iostream>
struct A
{
A()
{
member = 1;
}
A(const A &)
{
member = 2;
}
int member;
};
int main()
{
A a = A();
A b = a;
std::cout << a.member << std::endl;
std::cout << b.member << std::endl;
return 0;
}
a
コピーの省略とは、デフォルトのコンストラクターだけで初期化され、bはコピーコンストラクターで初期化されることを意味します。また、(少なくともgccでは)コピーの省略を行わないようにコンパイラーに指示できることも知っています。
私の質問は、コンパイラがこのクラスのためだけにコピーの省略を使用しないようにする方法がありますか?
実際の状況での答えは、99.9%の確率で他の方法を見つけることであり、0.01%のケースはありません(これは実際の架空の質問であり、「架空の質問」ではありません)。