1// { dg-do assemble } 2// GROUPS passed templates 3template<int N_rank> 4class Array; 5 6 7template<class T> 8class ArraySectionInfo { 9public: 10 enum { rank = 0 }; 11}; 12 13 14template<class T1> 15class SliceInfo { 16public: 17 static const int rank = ArraySectionInfo<T1>::rank; 18 19 typedef Array<rank> T_slice; 20}; 21 22template<class T2> 23typename SliceInfo<T2>::T_slice 24foo(T2 r2) 25{ 26 return SliceInfo<T2>::T_slice(); 27} 28 29