4

众所周知,C++ 模板是图灵完备的。因此,应该可以输出一个基本上在编译时呈现的 quine。有谁知道这样的 quine 是否已经写过,或者我在哪里可以找到。

4

2 回答 2

5

模板可以对整数数据元素执行任何类型的计算,真的。但他们不擅长 I/O。

答案应该采取什么形式?生成函数的模板,在执行时输出quine源?那不是真正的编译时间。一个模板生成一个编译时的字符列表(数百或数千个类长)组成 quine 源代码?也许这样更好,但你仍然需要运行程序来输出它。

此外,模板非常冗长,尽管它们是完整的,但这仅在标准推荐的小内存限制范围内。例如,您只能期望如此多的递归,超出该程序是高度特定于编译器的。编写一个以可移植形式存储自身的“有意义计算的”quine 可能是不可能的。

于 2010-02-15T19:46:05.153 回答
3

模板只有一种形式的直接输出——错误/警告消息。由于无法保证它们采用的形式,所以你不能写任何肯定是 quine 的东西,而且无论你写什么,几乎肯定会有其他文本穿插在源代码中。

使用将源代码嵌入错误消息中的编译器,获取每一行输出非常容易——只需确保每条语句都包含错误。

于 2010-02-15T19:59:03.880 回答