The following code compiles fine with clang and gcc (-std=c++14) but fails with icc 2016.
#include <type_traits> #include <utility> #include <tuple> template<class Integer, Integer... Ix> using IntegerSequence = std::tuple<std::integral_constant<Integer, Ix>...>; template<std::size_t... Indexes> using IndexSequence = IntegerSequence<std::size_t, Indexes...>; template<std::size_t... Indexes> int f(IndexSequence<Indexes...>) { return 0; } int main() { f(IndexSequence<3,7,8>()); return 0; }