作为一个实验,我只是编写了一些代码来编译时生成std::array<uint32_t, 256>
。表格内容本身是一个相当典型的CRC查找表 - 关于唯一的新功能是使用constexpr
函数来计算条目,而不是直接在源代码中放置自动生成的魔术表。constexpr计算数量的实际限制
无论如何,这个练习让我很好奇:在编译时,编译器愿意做什么来计算一个constexpr
函数或变量的定义会有什么实际的限制吗?例如像海湾合作委员会的-ftemplate-depth
参数创建模板元编程评估量的实际限制。 (I也不知道是否有可能在一个参数包的长度实际限制 - 这将限制的使用std::integer_sequence
中间对象创建一个编译时std::array
大小。)
如果我记得正确,是的是有一个限制,但它应该是比递归更大的数量级实例化限制。 – MikeMB