// { dg-do assemble } // GROUPS passed templates template class Array; template class ArraySectionInfo { public: enum { rank = 0 }; }; template class SliceInfo { public: enum { rank = ArraySectionInfo::rank }; typedef Array T_slice; }; template typename SliceInfo::T_slice foo(T2 r2) { return SliceInfo::T_slice(); }