![](/img/trans.png)
[英]Is it possible to test if a constexpr function is evaluated at compile time?
[英]Is it possible to ensure a constexpr function is called at most once at compile time?
正如标题所示:是否有可能确保在编译时最多调用一次constexpr函数?
如果功能不是constepxr,这显然是不可能的; 每当我按空格键时,我都可以编写一个被调用的函数,因此编译器永远无法在编译时解决这个问题。
简答:不,因为constexpr
功能无法读取/设置外部状态。 (他们可以有内部状态,但他们仍然需要“纯粹”) 。
真实答案:可能是的,但这是一个坏主意。 FilipRoséen有一系列博客文章,通过滥用friend
船和ADL来介绍有状态constexpr
功能的实现:
这项技术非常晦涩难懂。 它被认为是由CWG的功能滥用, 这是试图与问题#2118是病态的 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.