最近、クラスの古い恐ろしい混乱を見ていました...簡単に言えば、1つのメンバーがconstであれば、スレッドセーフに役立ちます。
しかし問題は、メンバが ctor で初期化され、自明でない構造であることです。そのため、そのメンバー用の特別な init 関数を作成することを考えていました。それは良い決断ですか。小さな非常に単純な例(実際のコードは条件付きでいっぱいです:)とtry-s):
class ComplexInitList
{
std::pair<double,double> init_pair(const int first, const int second)
{
if ((first == 0) || (second == 0))
throw std::invalid_argument("div by 0");
return std::make_pair(1.0/first, 1.0/second);
}
const std::pair<double,double> p;
public:
ComplexInitList(int a, int b):p(init_pair(a,b))
{
std::cout << p.first << ", " << p.second << std::endl;
}
};