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

Static Local Variable of a Template `inline` Function

本文关键字:静态 局部变量 inline 模板 函数      更新时间:2023-10-16

c++中inline函数的static局部变量保证像单个全局变量一样存在,如果我的理解是正确的。

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

下面的文章应该能很好地回答你的问题: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;
}