------- Comment #2 from tbm at cyrius dot com 2007-10-23 10:47 ------- /* Testcase by Martin Michlmayr <[EMAIL PROTECTED]> */
template < const int dim > class Point { public: Point () { } void operator= (const Point & rhs); private: float m_elem[dim]; }; template < const int dim > void Point < dim >::operator= (const Point < dim > &rhs) { if (this == &rhs) for (int i = 0; i < dim; ++i) m_elem[i] = rhs.m_elem[i]; } template < const int dim > class AxisBox { public: AxisBox () { } AxisBox (const Point < dim > &p1, const Point < dim > &p2, bool ordered = false) { setCorners (); } AxisBox (const AxisBox & a):m_low (a.m_low), m_high (a.m_high) { } void setCorners (void); private: Point < dim > m_low, m_high; }; template < const int dim > class RotBox { public: AxisBox < dim > boundingBox () const; private: Point < dim > m_corner0; }; template < const int dim > AxisBox < dim > RotBox < dim >::boundingBox () const { Point < dim > min = m_corner0, max = m_corner0; return AxisBox < dim > (min, max, true); } template < const int dim > void AxisBox <dim> ::setCorners (void) { const Point < dim > p2; m_high = p2; } template < typename Shape > class ShapeTerrainMod { virtual AxisBox < 2 > bbox () const; Shape m_shape; }; template < typename Shape > AxisBox < 2 > ShapeTerrainMod < Shape >::bbox ()const { return m_shape.boundingBox (); } template class ShapeTerrainMod < RotBox < 2 > >; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33869