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.