C++ Logo

std-discussion

Advanced search

Re: Why isn't using `type = [: evaluate() :]; ` SFINAE?

From: Brian Bi <bbi5291_at_[hidden]>
Date: Wed, 16 Sep 2026 12:27:53 -0400
There's never SFINAE for invalid alias declarations.

*Brian Bi*

On Wed, Sep 16, 2026, 12:20 PM Bingzhi via Std-Discussion <
std-discussion_at_[hidden]> wrote:

> template <class T>
> struct X {
> static consteval std::meta::info evaluate()
> { if (std::meta::is_same_type(^^T, ^^int)) return { }; else ... }
>
> using type = [: evaluate() :];
> };
> template <class T> concept C = requires { typename X<T>::type; };
> static_assert(!C<int>); // *error: *cannot splice a null reflection
>
>
> I don't know why it is. Can somebody explain?
> --
> Std-Discussion mailing list
> Std-Discussion_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion
>

Received on 2026-09-16 16:28:10