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

时间:2017-01-30 15:33:47

标签: c++ c++11 c++14 c++17 c++20

正如标题所示:是否有可能确保在编译时最多调用一次constexpr函数?

如果功能不是constepxr,这显然是不可能的;每当我按空格键时,我都可以编写一个被调用的函数,因此编译器永远无法在编译时解决这个问题。

1 个答案:

答案 0 :(得分:13)

简答:不,因为constexpr函数无法读取/设置外部状态。 (他们可以有内部状态,但他们仍然需要“纯粹”)

真实答案:可能是的,但这是一个坏主意。 FilipRoséen有一系列博客文章,通过滥用constexpr发货和ADL来涵盖有状态friend功能的实施:

这项技术非常晦涩难懂。它被认为是CWG滥用功能which is trying to make it ill-formed with issue #2118