https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85127
Bug ID: 85127 Summary: Members implementation outside class doesn't compile if class name is an alias from a using Product: gcc Version: 7.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: quen...@huot-marchand.fr Target Milestone: --- Hello, As I am coding with a coding style with a margin of 80 characters, I try to minimize my length as much as possible with the use of "using". The problem is well described here : https://godbolt.org/g/C2qQgL As you can see it compile on clang and msvc Apparently you can't do : template <class T> class Base { public: void foo(); }; template <class T> using B = Base<T>; template <class T> void B<T>::foo() { } But the standard seems to authorize it.