我在编译时过滤元组,如果元组为空或者元组包含多个元素,我想输出自定义错误消息。
static_assert
似乎有点过于复杂,因为我需要使用布尔逻辑。
static_assert(size != 0 || size >= 1, "Empty");
static_assert(size == 1 || size == 0, "More than 1");
我不认为这样的事情是可能的吗?
static_if(size == 0) compile_err("Empty");
static_if(size > 1) compile_err("More than 1");
较新版本的C ++是否提供static_assert的替代方法?
答案 0 :(得分:1)
static_assert
允许布尔逻辑。它不允许调用(非constexpr
)函数。因此,没有理由不能在代码中使用该逻辑。
static_assert(sizeof(Args...) != 0, "Empty");
static_assert(sizeof(Args...) < 2, "More than 1");