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

template <typename T>
struct A
{
  static const bool a = false;
};

template <typename X, typename Y = A <X>>
struct B
{
  B () noexcept (A <Y>::a) {}
};

template <typename X, typename Y>
struct C
{
  X x;
  Y y;
};

struct D
{
  D () throw (int);
};

C <D, B <D>> c;
