可能的重复:(
静态初始化/模板实例化)工厂模式
试图强制静态对象初始化的问题
编辑:有一个副本,但我会留下这个,因为我个人很难找到它。此外,这是对我有帮助的答案:
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
在不访问它的情况下进行初始化?