2015-06-01 32 views
7

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

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

+0

现在有办法在多个库(全球'inline'变量或模板'直列在多个翻译单元中可变)。没有标准化的链接。 –

+0

@DieterLücking您是否认为'inline'变量提案被接受包含在下一个标准中? – xiver77

+0

@ xiver77:没有线索 - 你能提供一个链接吗 –

回答

4

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