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