我只是想学习初学者东西的语法,以及当我在 VS2008 中编写这段简短的代码时它是如何工作的。下面的代码可以将数字 1 加到 499,但如果我将 1 加到 500,编译器会出错,给我:
fatal error C1001: An internal error has occurred in the compiler.
我只是想知道为什么会这样。编译器可以生成多少代码或其他东西是否有一些限制,对我来说它恰好是一个不错的整数 500?
#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;
}