// { 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();