https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67070
--- Comment #3 from Casey Carter <Casey at Carter dot net> --- Although not intuitive, this behavior is sane. It's what we're accustomed to when overloading functions constrained with enable_if<foo<T>::value> and enable_if<!foo<T>::value>; substitution failure of foo<T> disables *both* overloads. > This is probably a good issue to raise against the TS, and we should discuss > it in Kona. I won't be at Kona, but consider me strongly for static_assert(C<T>) regardless of how it may or may not affect the behavior of !C<T>. It's a bit odd to have an entity that is almost exactly like a constexpr bool variable/function with the exception that it cannot be evaluated to get a bool.