实施一个警官断言,当不在警官上下文中时,优雅地回到了断言吗?
相关:
- 如何获得编译时间错误常数评估表达式?
- 启用静态检查以进行持续评估
- href =“ https://stackoverflow.com/questions/67320438/how-to-fail-a-consteval-function”>如何使consteval函数失败?
我想拥有一个主体,以便尽可能 static_assert
,但是当 static_assert
不可能。我的感觉是 std :: is_constant_evaLED()
应该通过允许constexper执行使用与运行时执行不同的实现来帮助解决此问题,但是我尝试过的一切都失败了:
#define ASSERT0(cond) \
if (std::is_constant_evaluated()) { \
static_assert((cond)); \
} else { \
assert((cond)); \
}
#define ASSERT1(cond) \
if constexpr (std::is_constant_evaluated()) { \
static_assert((cond)); \
} else { \
assert((cond)); \
}
#define ASSERT2(cond) \
if consteval { \
static_assert((cond)); \
} else { \
assert((cond)); \
}
https://godbolt.org/z/kzwfxmdmdmd
基本上,如 @bop指出,正在在constexpr上下文中评估一个函数,其参数仍然不是积分常数()。
我是 std :: is_constant_evaled()
的新手。我缺少什么吗?是否应该能够在 static_assert
和断言
之间切换?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论