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

            Bug ID: 97297
           Summary: typename wrongly required in out-of-class member
                    function definitions
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mpolacek at gcc dot gnu.org
  Target Milestone: ---

This should compile with -std=c++20 due to P0634R3:

template <typename T>
struct S {
    int simple(T::type);

    template <typename U>
    int member(U::type);
};

template <typename T>
int S<T>::simple(T::type) { // we still wrongly require 'typename' here...
    return 1;
}

template <typename T>
template <typename U>
int S<T>::member(U::type) { // ...and here
    return 2;
}

[temp.res]/5.2.4 covers the out-of-class member function definitions.

Reply via email to