对应 std::enable_if_t

Counterpart to std::enable_if_t

如果某个值是真的,

std::enable_if_t 会给你一个类型。现在,如果表达式格式正确,我想要一个可以为您提供类型的东西。如果我要的类型是void,我可以做到decltype((void)(expr))。但是如果我想要void以外的东西怎么办?我想要一个简洁优雅的解决方案。

你可以这样使用:

template<typename T>
struct well_formed : std::true_type{};

然后将其与 enable_if_t

合并

不清楚你想如何使用它,但你可以概括 std::void_t:

template<typename T, typename...> struct helper { using type = T; };
template<typename T, typename...Ts> 
using type_t = typename helper<T,Ts...>::type;

(由于this standards defect,可能需要助手)

然后像这样使用它:

type_t<int, decltype(expr)>