Меерс, метапрораммирование, факториал
От: Слава Израиль  
Дата: 23.02.10 18:25
Оценка:
Читаю Меерса дошёл до метапрограммирования, следующий код (из книги) провёл меня в восторг:

#include <iostream>

using namespace std;

template<unsigned n>
struct Factorial
{
    enum{value = n*Factorial<n-1>::value};
};

template<>
struct Factorial<0>
{enum{value = 1};};

int main()
{
    cout << Factorial<1>::value << endl;
    cout << Factorial<100>::value << endl;
    return 0;
}


Теоритически всё красиво: факториал вычисляется во время компиляции, но на практике, программа выводит:
1
0

почему ?
gcc (SUSE Linux) 4.4.1 [gcc-4_4-branch revision 150839]
Спасибо за внимание
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.