4

C++テンプレートが完全にチューリングしていることが知られています。そのため、本質的にコンパイル時にレンダリングされるクインを出力できるはずです。そのようなクワインがまだ書かれているかどうか、またはどこで見つけることができるかを誰かが知っていますか?

4

2 に答える 2

5

テンプレートは、整数データ要素に対してあらゆる種類の計算を実行できます。しかし、彼らはI/Oがあまり得意ではありません。

答えはどのような形を取るべきですか?実行時にクインソースを出力する関数を生成するテンプレート?それは実際にはコンパイル時間ではありません。クインソースを構成する文字(数百または数千のクラスの長さ)のコンパイル時リストを生成するテンプレート?たぶんそれは良いですが、それでもそれを出力するためにプログラムを実行する必要があります。

また、テンプレートは非常に冗長であり、チューリング完全ですが、標準で推奨されている小さなメモリ制約の範囲内にすぎません。たとえば、プログラムが高度にコンパイラ固有である以上の再帰を期待することしかできません。持ち運び可能な形でそれ自体を保存する「意味のある計算された」クワインを書くことは不可能かもしれません。

于 2010-02-15T19:46:05.153 に答える
3

テンプレートには、エラー/警告メッセージという1つの形式の直接出力しかありません。これらの形式についての保証はないため、クワインであることが確実なものを書くことはできません。また、書いたものには、ほぼ確実に他のテキストがソースコードに散在しています。

エラーメッセージにソースを埋め込むコンパイラを使用すると、すべての行の出力を取得するのは非常に簡単です。すべてのステートメントにエラーが含まれていることを確認してください。

于 2010-02-15T19:59:03.880 に答える