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.