:: оператор разрешения области видимости перед вызовом функции шаблона в c ++ - PullRequest
4 голосов
/ 20 января 2012

Я застрял с шаблонами и оператором разрешения области видимости. Я нашел эти строки в файле, я не могу понять, почему мы используем :: перед вызовом функции шаблона, насколько я знаю, мы можем использовать только перед переменными при обращении к глобальной переменной , Любая идея будет полезна

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

1 Ответ

8 голосов
/ 20 января 2012

Оператор разрешения области :: (в начале) заставляет компилятор находить идентификатор из глобальной области, без которого идентификатор не найден относительно текущей области.

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)
}
...