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

extern "C" int printf(const char* ...);

namespace std
{
  typedef decltype(sizeof(0)) size_t;

  template<typename _Tp, _Tp... _Idx>
    struct integer_sequence
    {
      typedef _Tp value_type;
      static constexpr size_t size() { return sizeof...(_Idx); }
    };

  template<size_t... _Idx>
    using index_sequence = integer_sequence<size_t, _Idx...>;
}

void g(std::size_t a, std::size_t b, std::size_t c)
{
  printf("%zu, %zu, %zu\n", a, b, c);
}

template <std::size_t... Seq>
void f(std::index_sequence<Seq...>)
{
  g(Seq...);
}

int main()
{
  f(std::index_sequence<0, 1, 2>());
}
