// 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() { return 0; }
    int i1 = foo1<int>();
  };
};
template<int> struct A2;
template<> struct A2<0>
{
  template<typename, typename> struct B2
  {
    template<typename> int foo2() { return 1; }
    int i2 = foo2<int>();
  };
};
template<int> struct A3;
template<> struct A3<0>
{
  template<typename> struct B3
  {
    template<typename> int foo3() { return 2; }
    int i3 = foo3<int>();
  };
};