多个static_assert依赖于相同的值

时间:2015-12-02 23:01:53

标签: c++ c++14

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

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

1 个答案:

答案 0 :(得分:1)

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

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