是C++;递归枚举语言? 我知道C++不是可判定的。但它是递归枚举的吗 让我们将有效C++程序集定义为当前C++标准下的任何定义良好的程序。 < >是否可以构造一个编译器,它可以在有限的时间内识别有效的C++程序?

是C++;递归枚举语言? 我知道C++不是可判定的。但它是递归枚举的吗 让我们将有效C++程序集定义为当前C++标准下的任何定义良好的程序。 < >是否可以构造一个编译器,它可以在有限的时间内识别有效的C++程序?,c++,computation-theory,turing-complete,decidable,C++,Computation Theory,Turing Complete,Decidable,或者它是可共递归枚举的 < >是否可以构造一个编译器,它可以在有限的时间内识别出无效的C++程序? (p)>是否有可能构造一个编译器,它能在有限的时间内识别出有效的C++程序? 对。如果有足够的时间和资源,C++编译器应该能够编译任何有效的C++程序。递归可枚举语言需要一个图灵机,当字符串在语言中时,该图灵机总是终止并提供肯定的答案,而编译器基本上就是这样做的 < >是否可以构造一个编译器,它可以在有限的时间内识别出无效的C++程序? 不,C++模板语言是图灵完成,所以你可以在其中写无限递归。由

或者它是可共递归枚举的

< >是否可以构造一个编译器,它可以在有限的时间内识别出无效的C++程序? <>(p)>是否有可能构造一个编译器,它能在有限的时间内识别出有效的C++程序? 对。如果有足够的时间和资源,C++编译器应该能够编译任何有效的C++程序。递归可枚举语言需要一个图灵机,当字符串在语言中时,该图灵机总是终止并提供肯定的答案,而编译器基本上就是这样做的

< >是否可以构造一个编译器,它可以在有限的时间内识别出无效的C++程序? 不,C++模板语言是图灵完成,所以你可以在其中写无限递归。由于停机问题,无法判断程序是否会完成编译,因此无法确定C++程序是否能成功编译。

我曾经在C++模板中写了一个无限递归,并尝试用GCC编译。事实证明,gcc有一个可配置的递归深度限制。

您可能正在寻找。这个问题与实际的编码问题毫不相关。“C++模板是图灵完备的(2003)”,作者Todd L.Veldhuizen:这个问题不是一个实际的编程问题。这似乎是一个理论问题。但无论如何,请考虑:
while(黎曼假设是真的()){}
。1.10.24规定程序必须最终终止、调用I/O函数、访问易失性对象、执行同步操作或执行原子操作。如果黎曼假设是真的,那么这个程序是无效的。“实现可能会假设”和“一个有效的程序必须”是不同的东西。一个实现可能会假设某个东西是真的,但仅仅因为它不是真的并不意味着程序是无效的。顺便说一句,如果你有一个Riemann假设的实现,我很想看看它:P.根据我的定义,无限递归模板程序无效吗?标准禁止无限模板元编程吗?好问题。作为一种实用的规范(没有正式的语义),我认为这个问题并没有得到真正的解决。在当前的草案中,我发现:“实例化中无限递归的结果是未定义的。”标准中使用“未定义”这个词来指代无效的程序。