0

您可能知道 static_assert 不关心它是否在 if constexpr 的“活动”分支内(它总是“运行”)。

我有一个 hack 解决方法,它使用无效的数组维度来触发错误,但它很难看。C++20 中有更好的解决方案吗?

// does not work
template<typename T>
void argh(){
    if constexpr(sizeof (T)<123456 ) {

    } else {
        static_assert(0);
    }
}
// works but confusing to novice programmers, both code and error
template<typename T>
void meh(){
    if constexpr(sizeof (T)<123456 ) {

    } else {
        int error_triggering[-sizeof(T)];
    }
}
4

0 回答 0