Conditional static_assert

Conditional static_assert

本文关键字:assert static Conditional      更新时间:2023-10-16

在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");
};

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

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

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