【发布时间】:2011-03-14 21:06:51
【问题描述】:
我想这样做:
template <typename T>
struct S
{
...
static double something_relevant = 1.5;
};
但我不能,因为something_relevant 不是整数类型。它不依赖于T,但现有代码依赖于它是S 的静态成员。
由于 S 是模板,我无法将定义放入已编译的文件中。我该如何解决这个问题?
【问题讨论】:
-
同样适用于
std::string类型 -
自 c++11 以来,关键字 inline 发生了变化,因此可以在声明点初始化静态变量。所以这个声明看起来像“inline static double something_relevant = 1.5;”
-
@user8991265 我相信内联变量从 C++17 开始可用,而不是 C++11。