免责声明:这个问题有点复杂,因为它是一个问题,但它们都涉及到同一种概念/问题。C++编译器可以缓存constexpr函数的结果吗?
前提: consexpr
功能可能仅由单个return
声明。
它们可以调用其他函数和使用条件,但理论上它们应该展示功能的纯度,因此结果应该在某种映射中可以缓存(由编译器在编译时),这样编译器就没有不断重新评估相同的功能。
问题(S): 这是假设是正确的或者是有什么我还没有考虑,使得它不可能缓存constexpr
函数的结果? 如果不是,这是否意味着每次使用函数时都必须计算constexpr
函数?
template
怎么样? template
可以缓存的值是constexpr
还是每次都必须重新计算?
通常可以在编译时评估'consexpr'函数;这是练习的重点。在那种情况下,可执行代码最终只是通过评估函数调用的结果,而不是函数本身的代码。这是最终的缓存。或者你问编译器是否可以在编译时优化多个评估?可能,但我不知道你为什么在意。 –
你为什么要在意?它对你的程序有什么不同? –
@IgorTandetnik我的意思是编译器假定函数是纯粹的,使用映射缓存给定输入的结果,并从此开始查阅缓存(即映射),而不是不断重新评估函数? – Pharap