1 // PR c++/61959 2 // { dg-do compile { target c++11 } } 3 4 template <class Coord> struct BasePoint 5 { 6 Coord x, y; BasePointBasePoint7 constexpr BasePoint (Coord, Coord) : x (0), y (0) {} 8 }; 9 template <class T> struct BaseCoord 10 { 11 int value; BaseCoordBaseCoord12 constexpr BaseCoord (T) : value (1) {} 13 }; 14 template <class units> struct IntCoordTyped : BaseCoord<int>, units 15 { 16 typedef BaseCoord Super; IntCoordTypedIntCoordTyped17 constexpr IntCoordTyped (int) : Super (0) {} 18 }; 19 template <class units> 20 struct IntPointTyped : BasePoint<IntCoordTyped<units> >, units 21 { 22 typedef BasePoint<IntCoordTyped<units> > Super; IntPointTypedIntPointTyped23 constexpr IntPointTyped (int, int) : Super (0, 0) {} 24 }; 25 struct A 26 { 27 }; 28 IntPointTyped<A> a (0, 0); 29