Параметр шаблона не требуется в типе возвращаемого значения - PullRequest
2 голосов
/ 30 июня 2011
template <typename Type>
class Foo
{
    Foo& Bar()
    {
        return *this;
    }
};

Почему это компилируется?Разве мне не нужно указывать параметр шаблона в типе возвращаемого значения?

Foo<Type>& Bar()
{
     return *this;
}

1 Ответ

2 голосов
/ 30 июня 2011

Foo<Type> подразумевается, потому что определение Bar находится в пределах определения класса.Если бы это было вне определения класса, то вы должны были бы определить его явно:

template <typename Type>
Foo<Type>& Foo<Type>::Bar()
{
    return *this;
}
...