私は初心者向けの構文と、VS2008 でこの短いコードを作成していたときにどのように機能するかを学ぼうとしていました。以下のコードは、1 から 499 までの数字を加算するのに機能しますが、1 から 500 までを加算すると、コンパイラがバグを出して次のように表示します。
fatal error C1001: An internal error has occurred in the compiler.
そして、私はそれがなぜだろうと思っていました。コンパイラが生成できるコードの量に制限はありますか?
#include <iostream>
using namespace std;
template < int b >
struct loop {
enum { sum = loop< b - 1 >::sum + b };
};
template <>
struct loop< 0 > {
enum { sum = 0 };
};
int main() {
cout << "Adding the numbers from 1 to 499 = " << loop< 499 >::sum << endl;
return 0;
}