人们这样说是什么意思?对程序员和编译器有什么影响?
最佳答案
这与C++的模板系统是Turing complete有关。 .这意味着(理论上)您可以在编译时使用可以使用任何其他图灵完备语言或系统的模板计算任何内容。
这有一些明显有效的 C++ 程序无法编译的副作用;编译器将永远无法确定程序是否有效。如果编译器可以判断所有程序的有效性,它就可以解决Halting problem。 .
请注意,这与 C++ 语法的歧义无关。
编辑: Josh Haberman 在下面的评论和 blog post 中指出有一个很好的例子,为 C++ 构建一个解析树实际上是不可判定的。由于语法的歧义,无法将语法分析与语义分析分开,而语义分析是不可判定的,语法分析也是不可判定的。
另请参阅(来自 Josh 帖子的链接):
关于c++ - 人们说 C++ 有 "undecidable grammar"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/794015/