// PR c++/58583
// { dg-do compile { target c++11 } }

template<int> struct A
{
  int i = (A<0>(), 0); // { dg-error "recursive instantiation of default" }
};

A<0> a;

template<int N> struct B
{
  B* p = new B<N>; // { dg-error "recursive instantiation of default" }
};

B<1> x;

struct C
{
  template<int N> struct D
  {
    D* p = new D<0>;		// { dg-error "" }
  };
};

C::D<0> d;