7

テンプレートとスコープ解決演算子で立ち往生しています。これらの行をファイルで見つけました。テンプレート関数呼び出しの前で::を使用している理由がわかりません。私の知る限り、グローバル変数を参照する場合は、変数の前で::しか使用できません。 。どんなアイデアも役に立ちます

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

1 に答える 1

14

スコープ解決演算子::(最初)は、コンパイラーにグローバルスコープから識別子を検索させます。それがないと、現在のスコープに対して識別子が検索されます。

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)
}
于 2012-01-20T07:41:01.033 に答える