Date: Thu, 17 Sep 2026 00:35:18 +0800 (CST)
Thanks. So I modified a bit:
static constexpr auto result = evaluate();
template <class T> concept C = requires { typename [: X<T>::result :]; };
At 2026-09-17 00:27:53, "Brian Bi" <bbi5291_at_[hidden]> wrote:
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?
static constexpr auto result = evaluate();
template <class T> concept C = requires { typename [: X<T>::result :]; };
At 2026-09-17 00:27:53, "Brian Bi" <bbi5291_at_[hidden]> wrote:
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]pp.org https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion
Received on 2026-09-16 16:35:27
