https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91754
Bug ID: 91754 Summary: [c++2a] Defining member function outside of class body fails to compile when containing class is templated on class-type NTTP Product: gcc Version: 9.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: beachboy44 at me dot com Target Milestone: --- https://godbolt.org/z/OQHx2M The following code fails to compile: struct S {}; // error occurs regardless of whether or not S is empty template<S s> struct T { T(); // declare ctor or mem fn }; template<S s> inline T<s>::T() {} // define ctor or mem fn error: invalid use of incomplete type 'struct T<((const S)s)>' However, defining the ctor or mem fn inside the class body compiles.