std::is_constant_evaluated()
对于确定 C++20 中的编译时评估很有用。
if consteval
。
但是没有提及
std::is_constant_evaluated()
的弃用。
从C++23开始有什么实际用途吗?
引自论文:
在讨论本文时经常出现的问题之一是:如果我们有
,我们是否还需要if consteval
,我们可以弃用它吗?std::is_constant_evaluated()
本文不建议进行此类弃用。原因是这个函数实际上偶尔还是有用的(如上一节)。如果标准库没有提供,用户就自己编写。我们并不关心它的实现难度——需要这个的用户肯定能够正确地编写它——但我们关心的是这个功能的扩散。拥有
的优点是它既变得实际上是可教导的,又变得可警告:所讨论的警告只会发生,因为我们知道这个名字的含义。也许仍然可以在std::is_constant_evaluated()
上发出警告,但这是一个更难的问题。if constexpr (your::is_constant_evaluated())