6 template<class T1, class T2>
9 template<class T1, class T2>
10 struct BT< Foo<T1>, Foo<T2> > { static const int i = 1; };
12 template<class T1, class T2>
13 struct BT< T1, Foo<T2> > { static const int i = 2; };
15 template<class T1, class T2>
16 struct BT< Foo<T1>, T2 > { static const int i = 3; };
18 template<class T1, class T2>
19 int foo(Foo<T1>, Foo<T2>)
24 template<class T1, class T2>
30 template<class T1, class T2>
38 BT< double, Foo<int> >::i;
39 BT< Foo<int>, Foo<int> >::i;
40 BT< Foo<int>, float >::i;
42 foo(Foo<int>(), Foo<int>());