// RUN: %clang_cc1 -fsyntax-only -verify %s // template // struct Ackermann { // enum { // value = M ? (N ? Ackermann >::value // : Ackermann::value) // : N + 1 // }; // }; template struct Ackermann { enum { value = Ackermann::value >::value }; }; template struct Ackermann { enum { value = Ackermann::value }; }; template struct Ackermann<0, N> { enum { value = N + 1 }; }; template<> struct Ackermann<0, 0> { enum { value = 1 }; }; int g0[Ackermann<3, 4>::value == 125 ? 1 : -1];