模板' inline '函数的静态局部变量
Static Local Variable of a Template `inline` Function
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;
}
相关文章:
- 获取具有静态局部变量的绑定/推断捕获 lambda 的函数指针
- C++:用IIFE线程初始化静态局部变量安全吗
- 静态局部变量会被错误地优化吗?
- 为什么静态局部变量的 MSVC 线程安全初始化使用 TLS
- CppUnit:为什么静态局部变量保持其值
- 静态局部变量没有物理内存
- 使用函数模板中静态局部变量的地址作为类型标识符是否安全
- 通过静态局部变量的参考/指针返回
- 递归计算在不使用静态局部变量,全局变量或静态函数的情况下,在递归函数中发生的环数
- 关于静态局部变量的澄清
- 如果在静态局部变量之前出现异常,会发生什么
- 其中定义函数的静态局部变量对象
- C++ 中静态局部变量的范围和生存期
- 返回静态局部变量作为引用
- DLL 中的 C++ 静态局部变量初始化会导致_CrtIsValidHeapPointer异常
- 在C++中如何在类方法之间访问静态局部变量的值
- 静态方法中的正常局部变量和静态局部变量之间有什么区别吗?
- C++11 中的静态局部变量
- 静态局部变量的线程安全增量
- G++ 4.6 -std=gnu++0x:静态局部变量构造函数调用计时和线程安全