【发布时间】:2016-06-27 17:38:31
【问题描述】:
作为一个实验,我只是把一些代码放在一起,在编译时生成一个std::array<uint32_t, 256>。表内容本身是一个相当典型的 CRC 查找表 - 唯一的新功能是使用 constexpr 函数来计算条目,而不是直接在源代码中放置一个自动生成的魔法表。
无论如何,这个练习让我很好奇:编译器愿意在编译时评估 constexpr 函数或变量定义的计算量是否有任何实际限制?例如类似于 gcc 的 -ftemplate-depth 参数对模板元编程评估的数量产生了实际限制。 (我还想知道参数包的长度是否存在实际限制——这会限制使用std::integer_sequence 中间对象创建的编译时std::array 的大小。)
【问题讨论】:
-
如果我没记错的话,是的,有一个限制,但它应该比递归实例化限制大几个数量级。
标签: c++ c++11 c++14 constexpr limits