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

template<int> struct A1;

template<> struct A1<0>
{
  template<typename, typename...> struct B1
  {
    template<typename> int foo1() {}

    int i1 = foo1<int>();
  };
};

template<int> struct A2;

template<> struct A2<0>
{
  template<typename, typename> struct B2
  {
    template<typename> int foo2() {}

    int i2 = foo2<int>();
  };
};

template<int> struct A3;

template<> struct A3<0>
{
  template<typename> struct B3
  {
    template<typename> int foo3() {}

    int i3 = foo3<int>();
  };
};
