重複の可能性: (静的初期化/テンプレートのインスタンス化)静的オブジェクトの初期化を強制しようとする
ファクトリ パターンの問題
編集:これの複製がありますが、私は個人的にそれを見つけるのに苦労したので、これを残します. さらに、私を助けた答えは次のとおりです。
https://stackoverflow.com/a/2852234/673730
次のクラスを想定します。
template<class X>
struct A
{
static bool x;
static bool foo()
{
cout << "here";
return true;
}
};
template<class X>
bool A<X>::x = A<X>::foo();
を特化するA
と、静的フィールドx
が初期化されると想定していました。ただし、次のとおりです。
A<int> a;
//no output
への呼び出しにはなりませんfoo
。メンバーにアクセスしようとすると、動作は期待どおりです。
A<int> a;
bool b = a.x;
//output: here
編集:アクセスせずに初期化されていることを確認するにはどうすればよいですか?A::x