我在編譯時過濾元組,如果元組爲空或者元組包含多個元素,我想輸出自定義錯誤消息。多個static_assert取決於相同的值
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'更復雜的邏輯?顛倒你的兩個'static_if'條件應該以同樣的方式工作。在第一個'static_assert'中,假設一個無符號類型,'size≠0⇔size≥1',所以任何一個都是多餘的。 – chris
'static_assert(size!= 0,「不能爲空」)和'static_assert(size <= 1,「太多」)似乎是你想要的。 –
@MatsPetersson你說得對,我不知道爲什麼我沒有像你那樣寫。我想我一定很困惑,'false'觸發assert而不是'true'。 –