gpt4 book ai didi

c++ - 除非使用,否则为什么不初始化静态模板字段?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:36 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
(static initialization/template instantiation) problems with factory pattern
trying to force static object initialization

编辑:这里有一个拷贝,但我会保留它,因为我个人很难找到它。此外,这是对我有帮助的答案:

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 在不访问它的情况下被初始化?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com