https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110580
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code --- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Here is another testcase: ``` struct s0 {}; struct s1 {}; template <typename T> struct t { static constexpr bool v = false; }; template<> struct t<s0> { static constexpr bool v = true; }; template <typename _Key> struct s3 { template <typename _Up, typename _Vp = _Up> static constexpr bool __usable_key = t<_Vp>::v; static_assert(__usable_key<s0>); static_assert(!__usable_key<s1>); }; s3<s0> t2; ``` I get the feeling _Up in the default template argument of __usable_key is being replaced with _Key template argument for some reason.