2015-06-01 33 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; 
}