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

标签 c++ templates

<分区>

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

如果 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;
}

关于c++ - 模板 `inline` 函数的静态局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30581479/

相关文章:

c++ - 使用可变参数模板的基于策略的设计

c++ - 派生模板类访问基类成员数据

c++ - void_t 和带有 decltype : are they completely interchangeable? 的尾随返回类型

c++ - Foreach 等价于可变参数函数

c++ - 自定义矩阵和 OpenGL 着色器。

c++ - HDF5 简单读取数据集失败

c++ - 声明后初始化 C++ 模板类

c++ - 为什么具有非常量复制构造函数的类不被视为可复制构造?

c++ - Microsoft Visual Studio 2008 正在与其所依赖的项目并行构建依赖项目

c++ - C++ 中是否可以使用条件类型定义?