2012-01-20 31 views
2

我被模板和範圍解析運算符卡住了。我發現這些行在一個文件中,我無法弄清楚爲什麼我們使用::在模板函數調用前面,就我的知識而言,我們只能在引用全局變量時在變量前面使用:: 。任何想法會有所幫助::範圍解析運算符在C++中的模板函數調用前

#define CREATE_AND_DECODE_TYPE(Type, buffer, pType) \ 
    ::CreateAndDecodeType<Type>(buffer, pType, throwVarBindExceptions, static_cast<Type *>(NULL)) 
+2

不,範圍解析運算符不限於變量。你可以用它來調用函數。 –

回答

6

範圍解析運算符::(開頭)強制編譯器發現從全球範圍內的標識,沒有它的標識相對於當前的範圍中。

namespace X 
{ 
    namespace std 
    { 
     template<typename T> 
     class vector {}; 
    } 

    std::vector<int>  x;  // This is X::std::vector 
    ::std::vector<int> y;  // This is the std::vector you normally expect (from the STL) 
} 
相關問題