Remove old autovect-branch by moving to "dead" directory.
[official-gcc.git] / old-autovect-branch / gcc / testsuite / g++.old-deja / g++.martin / sts_iarr.C
blob77ae5ae599fb396127f356eb62cb8aaec693dde4
1 // { dg-do run  }
2 // egcs-bugs 999-02-22 14:26 Stefan Schwarzer
3 // sts@ica1.uni-stuttgart.de
4 // should compile and return 0  
6 template <int N>
7 struct Outer{
8   struct Inner{
9     Inner(int n): sum(n){}
11     typename Outer<N-1>::Inner operator[](int n) const
12     { return typename Outer<N-1>::Inner(sum + n); }
14     int sum;
15   };
17   typename Outer<N-1>::Inner operator[](int n) const
18   { return typename Outer<N-1>::Inner(n); }
22 // specializations for N==1
23 template<>
24 struct Outer<1> { 
25   struct Inner {
26     Inner(int n): sum(n){}
28     int operator[](int n) const 
29     { return sum+n; }
30     
31     int sum;
32   };
34   int operator[](int n) const
35   { return n; }
36 };  
39 int main()
41   Outer<1>  sum1;
42   //std::cout << sum1[1] << "\n";
43   Outer<2>  sum2;
44   //std::cout << sum2[1][1] << "\n";
45   return sum1[1] + sum2[1][1] - 3;