https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81263
TC <rs2740 at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rs2740 at gmail dot com --- Comment #2 from TC <rs2740 at gmail dot com> --- This is not DR1558; the issue here is declaration matching rather than SFINAE. Just having the two func definitions is sufficient to trigger the error: template<class...> using void_t = void; template <typename T, void_t<typename T::x>* = nullptr> void func() {} template <typename T, void_t<typename T::y>* = nullptr> void func() {} This is actually CWG 1980.