1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 // expected-no-diagnostics
4 // template<unsigned M, unsigned N>
7 // value = M ? (N ? Ackermann<M-1, Ackermann<M, N-1> >::value
8 // : Ackermann<M-1, 1>::value)
13 template<unsigned M
, unsigned N
>
16 value
= Ackermann
<M
-1, Ackermann
<M
, N
-1>::value
>::value
20 template<unsigned M
> struct Ackermann
<M
, 0> {
22 value
= Ackermann
<M
-1, 1>::value
26 template<unsigned N
> struct Ackermann
<0, N
> {
32 template<> struct Ackermann
<0, 0> {
38 int g0
[Ackermann
<3, 4>::value
== 125 ? 1 : -1];