https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69348
David Friberg <davveston at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |davveston at gmail dot com --- Comment #2 from David Friberg <davveston at gmail dot com> --- Another similar but more common (/less contrived) example, rejects-valid e.g. for GCC 10.1.0 for all C++ version (-std=c++X with X in {98, 11, 17, 2a/20}). // https://wandbox.org/permlink/aQpRzgcvAHOihKz5 template<typename T> struct S { using type = int; type f() const; }; template<typename T> using type_t = typename S<T>::type; template <typename T> type_t<T> S<T>::f() const { } // error: no declaration matches 'type_t<T> S<T>::f() const' int main() {} --- Brought up in https://stackoverflow.com/questions/65110143/using-typealias-in-place-of-typedef-defined-in-class-in-definition