条件static_assert

ben*_*der 1 c++ c++11 c++14

是否有一种优雅的方式在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");
};
Run Code Online (Sandbox Code Playgroud)

Bif*_*fen 5

内部的简单布尔逻辑static_assert()应该这样做:

static_assert(
  (!std::is_fundamental<T>::value)
  || std::is_floating_point<T>::value,
  "must be floating pt"
);
Run Code Online (Sandbox Code Playgroud)

T要么不是基础,要么是浮点.换句话说:如果T 基础,它也必须是浮点数.