是否有一种优雅的方式在c ++ 11中执行条件 static_assert
例如:
template <class T>
class MyClass
{
COMPILE_TIME_IF( IsTypeBuiltin<T>::value)
static_assert(std::is_floating_point<T>::value, "must be floating pt");
};
答案 0 :(得分:5)
static_assert()
中的简单布尔逻辑应该这样做:
static_assert(
(!std::is_fundamental<T>::value)
|| std::is_floating_point<T>::value,
"must be floating pt"
);
即。 T
要么不是基础,要么是它的浮点数。换句话说:如果T
是基础,那么它也必须是浮点数。