[c++] Whitelist std::integer_sequence and replace base::IndexSequence with std::index_sequence.

The helper base::MakeIndexSequenceForTuple doesn't have a drop-in replacement
in the STL (std::index_sequence_for takes a parameter pack), so it has been
kept.

Bug: 554717
Change-Id: Ib38ea21855cd5c0f913727282a3603dc05287000
Tbr: jam@chromium.org
Reviewed-on: https://chromium-review.googlesource.com/616082
Reviewed-by: Jeremy Roman <jbroman@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Jeremy Roman <jbroman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#494802}

CrOS-Libchrome-Original-Commit: 84956fa86786f73fa41ebf99e2f6b8d549688c91
diff --git a/ipc/ipc_message_templates.h b/ipc/ipc_message_templates.h
index 57f5cf0..cc90376 100644
--- a/ipc/ipc_message_templates.h
+++ b/ipc/ipc_message_templates.h
@@ -9,6 +9,7 @@
 
 #include <tuple>
 #include <type_traits>
+#include <utility>
 
 #include "base/logging.h"
 #include "base/trace_event/trace_event.h"
@@ -35,7 +36,7 @@
                           Method method,
                           P* parameter,
                           const Tuple& tuple,
-                          base::IndexSequence<Ns...>) {
+                          std::index_sequence<Ns...>) {
   // TODO(mdempsky): Apply UnwrapTraits like base::DispatchToMethod?
   (obj->*method)(parameter, std::get<Ns>(tuple)...);
 }
@@ -49,7 +50,7 @@
                  P* parameter,
                  const std::tuple<Ts...>& tuple) {
   DispatchToMethodImpl(obj, method, parameter, tuple,
-                       base::MakeIndexSequence<sizeof...(Ts)>());
+                       std::make_index_sequence<sizeof...(Ts)>());
 }
 
 enum class MessageKind {