模板`inline`函数的静态局部变量

xiv*_*r77 7 c++ templates

staticinline如果我的理解是正确的,那么C++中函数的局部变量保证就像是一个全局变量一样存在.

如果inline函数是模板,那么同样适用,编译器可以生成函数的多个版本吗?

Tho*_*ber 5

以下文章应该可以很好地回答您的问题:http : //www.geeksforgeeks.org/templates-and-static-variables-in-c/

简而言之:编译器为每个模板生成一个静态变量。

如果你想为所有模板使用相同的变量,你可以尝试这样的事情:

int& hack()
{
  static int i = 10;
  return i;
}

template <typename T>
void fun(const T& x)
{
  int &i = hack();
  cout << ++i;
  return;
}
Run Code Online (Sandbox Code Playgroud)