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 enum { 18 rank = ArraySectionInfo<T1>::rank 19 }; 20 21 typedef Array<rank> T_slice; 22}; 23 24template<class T2> 25typename SliceInfo<T2>::T_slice 26foo(T2 r2) 27{ 28 return SliceInfo<T2>::T_slice(); 29} 30 31