繁体   English   中英

是否有可能确保在编译时最多调用一次constexpr函数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM