https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106201
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- Reduced to not use concepts: struct foo { template<typename T, typename = decltype(f(*(T*)nullptr))> foo(const T&) { } }; struct bar { }; struct baz { template<typename T> baz(const T&) { } }; void f(foo&); void f(baz, ...); int main() { bar b; f(b); } G++ goes into infinite recursion, Clang, EDG and MSVC accept it.