// { dg-do assemble }
template<class CoordinateSystem, class MeshTag>
struct Mesh { };
struct RectGrid { };
struct RectMesh { };
struct Cartesian { };
template<class CS>
struct Mesh<CS, RectGrid> { };
template<class CS>
struct Mesh<CS, RectMesh> : public Mesh<CS, RectGrid> { };
template<class CS>
void foo(const Mesh<CS, RectGrid> &)
{
}
int main()
{
Mesh<Cartesian, RectMesh> m;
foo(m);
}