模板'inline'函数的静态局部变量 代码> static C++中的“代码> >内联< /Cult>函数的局部变量保证如果存在一个全局变量,如果我的理解是正确的,则< /P>
如果模板'inline'函数的静态局部变量 代码> static C++中的“代码> >内联< /Cult>函数的局部变量保证如果存在一个全局变量,如果我的理解是正确的,则< /P>,c++,templates,C++,Templates,如果内联函数是一个模板,编译器可以在模板中生成函数的多个版本,那么这同样适用吗?下面的文章应该能很好地回答您的问题: 简而言之:编译器为每个模板生成一个静态变量 如果希望所有模板使用相同的变量,可以尝试以下方法: int& hack() { static int i = 10; return i; } template <typename T> void fun(const T& x) { int &i = hack(); cout <
内联
函数是一个模板,编译器可以在模板中生成函数的多个版本,那么这同样适用吗?下面的文章应该能很好地回答您的问题:
简而言之:编译器为每个模板生成一个静态变量
如果希望所有模板使用相同的变量,可以尝试以下方法:
int& hack()
{
static int i = 10;
return i;
}
template <typename T>
void fun(const T& x)
{
int &i = hack();
cout << ++i;
return;
}
int&hack()
{
静态积分i=10;
返回i;
}
模板
虚无乐趣(康斯特T&x)
{
int&i=hack();
现在是否有办法在多个库中设置一个全局内联
变量(或者在多个翻译单元中设置一个模板内联
变量)。没有标准化的链接。@DieterLücking您的意思是内联变量建议被接受包含在下一个标准中吗?@xiver77:没有线索-您能提供一个link@DieterLücking您说过“现在有一种方法可以在多个库中使用全局内联变量”。模板函数不是函数。它是用于生成函数的模板。每组模板参数(不是函数参数)生成一个不同的函数。inline
的规则适用于每个此类函数实例。这就是您要问的问题吗?