Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模板'inline'函数的静态局部变量 代码> static C++中的“代码> >内联< /Cult>函数的局部变量保证如果存在一个全局变量,如果我的理解是正确的,则< /P>_C++_Templates - Fatal编程技术网

模板'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
的规则适用于每个此类函数实例。这就是您要问的问题吗?