// { dg-do compile { target c++11 } }
template<int N> struct Int2Type { };

template<typename... T>
struct Outer {
  template<typename... U>
  void foo(Int2Type<sizeof...(T)>, Int2Type<sizeof...(U)>);
};


Outer<short, int, long> outer;

void g4() {
  outer.foo<float, double>(Int2Type<3>(), Int2Type<2>());
}

template<typename... T, template<T...> class X> void f1();
