https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70528
--- Comment #9 from Patrick Palka <ppalka at gcc dot gnu.org> --- Here's something strange. gcc rejects and clang accepts the following test case, but if decltype (A()) is replaced by decltype (T()) then gcc accepts and clang rejects it. template <class T> struct H { template <typename A = T, typename = decltype (A())> H (); }; template <class T> struct I { H<T> u; }; struct J { struct K { int First = 0; }; I<K> FunctionMDInfo; }; The error is still error: constructor required before non-static data member for ‘J::K::First’ has been parsed