1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// { dg-do run } extern "C" void abort (); template <int a> inline int fact () { return a * fact<a-1> (); } template <> inline int fact<1> () { return 1; } int main() { if (fact<3> () != 6 || fact<1> () != 1 || fact<3> () != 6 || fact<1> () != 1 || fact<1+0> () != 1) abort (); }