1 template <typename T0> struct tuple {
2 typedef tuple<int> tail;
5 template <> struct tuple<int> {
10 static const int i = length<typename tuple<L>::tail>::i;
14 struct length<tuple<int> > {
15 static const int i = 1;
18 template <int> struct M {};
21 M<length<tuple<A> >::i > foo (A*);
24 M<length<tuple<A> >::i> foo (const A*);