静态断言添加操作是否可用
Static assert whether or not add operation is available
我正在尝试创建一个静态断言来检查类型 A 是否可以添加到类型 B。有什么方法可以在编译时检查模板类型 A 是否可以添加到模板类型 B? A 和 B 真的可以是任何东西。
使用 is_detected,您可以执行如下操作:
template <typename LHS, typename RHS>
using sum_t = decltype(std::declval<LHS>() + std::declval<RHS>());
template <typename LHS, typename RHS>
using has_sum = is_detected<sum_t, LHS, RHS>;
我正在尝试创建一个静态断言来检查类型 A 是否可以添加到类型 B。有什么方法可以在编译时检查模板类型 A 是否可以添加到模板类型 B? A 和 B 真的可以是任何东西。
使用 is_detected,您可以执行如下操作:
template <typename LHS, typename RHS>
using sum_t = decltype(std::declval<LHS>() + std::declval<RHS>());
template <typename LHS, typename RHS>
using has_sum = is_detected<sum_t, LHS, RHS>;