gpt4 book ai didi

c++ - 编译器能否识别模板元编程中的递归问题?

转载 作者:太空狗 更新时间:2023-10-29 20:16:04 25 4
gpt4 key购买 nike

在模板元编程中,如果递归被错误地实现并导致无限循环,语言编译器能否检测到它?还是编译器会遇到最终的堆栈溢出和崩溃?我敢打赌编译器无法检测到这一点,因为这样做会违反停机问题的不可判定性。

我的结论正确吗?当然,我可以用一段代码来尝试这个,但我想听到更多关于这种情况的合格想法。

编辑:谢谢大家,我大致了解了我对 tmp 计算理论方面的推论并没有错。我也明白编译器实现可以有任意的递归深度限制(当然我重申我可以测试第二部分,但这只是我的观点)。

最佳答案

您通常无法检测到这种无限递归;模板元编程具有图灵能力,并且这种检测将等同于解决停机问题。与图灵难题一样,这并不意味着您无法检测到某些情况。

我认为编译器倾向于根据标准确定模板可以嵌套的最小级别数,以及他们将诊断嵌套太深的最大级别数。

关于c++ - 编译器能否识别模板元编程中的递归问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10873179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com