https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67965

            Bug ID: 67965
           Summary: gcc (incorrectly) requires template keyword in
                    non-dependent expression
           Product: gcc
           Version: 5.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vanyacpp at gmail dot com
  Target Milestone: ---

I believe that in the following example "template" keyword is not required as
expression "f()" is not type dependent. It's a call to a function in current
instantiation and this can not be altered by any specialization.

class B
{
public:
    template<typename T>
    T f() {
        return T{};
    }
};

template<typename T>
class C
{
public:
    B f()
    {
        return{};
    }

    C()
    {
        f().template f<int>(); // here (!)
    }
};

int main()
{
    C<int> p;
}

Reply via email to