模板编译真的需要多长时间?

sha*_*oth 6 c++ templates compilation

模板元编程可用于在编译时而不是在运行时期间计算诸如阶乘的事物.我听说一些编程竞赛对编译时间的限制正是为了清除模板元编程滥用.

是否有任何无辜的使用模板的例子需要花费很长时间(如几个小时)来编译?

sim*_*mon 5

模板机制是Turing-complete.这意味着至少在理论上,任何可以完成的计算都可以在编译时以这种方式完成(实际上,您可能会很快遇到模板深度等硬限制,但这取决于编译器).

你是否想要这样做是一个单独的问题.您可以使用昂贵的算法轻松匹配"编译小时数"的标准.但是还有更多实用的代码,例如实现FFT的代码; 给一个足够大的数据集,这需要一段时间......


mar*_*cog 4

我听说国际信息学奥林匹克竞赛(一个这样的编程竞赛)在参赛者使用类似这样的技术创建 7 维向量后首次引入了编译时间限制。他的代码必须连夜编译,这太糟糕了。我认为这发生在 90 年代末的某个时候。