https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86960

--- Comment #20 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Marek Polacek from comment #19)
> The ICE was fixed by r15-3195.  I'm not sure it's valid code so this may be
> fixed now.

The odd thing is if the outer class was not a variadic arg template, all
compilers I tried accept it.

That is:
```
template<class T>
struct Outer {
    template<T x>
    struct Inner;
};


template<>
template<bool x>
struct Outer<bool>::Inner { 
    static constexpr bool value = x;
};

static_assert(Outer<bool>::Inner<true>::value);
```

But once you change T to be variandic, compilers reject it.  I don't see why we
are just specializing the inner with outer being T...=={bool}.

Reply via email to