依赖于同一值的多个static_assert

Multiple static_assert's that depend on the same value

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

我在编译时过滤一个元组,如果元组为空或元组包含多个元素,我想输出一条自定义错误消息。

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的替代方案?

static_assert允许布尔逻辑。它不允许调用(非constexpr)函数。因此,没有理由不能在代码中使用该逻辑。

static_assert(sizeof(Args...) != 0, "Empty");
static_assert(sizeof(Args...) < 2, "More than 1");