Mark base::Tuple as final
Extending tuple confuses the compiler when we replace
base::Tuple with std::tuple.
This CL removes a base::Tuple extension and forbids it.
BUG=554987
Review URL: https://codereview.chromium.org/1462443002
Cr-Commit-Position: refs/heads/master@{#360404}
CrOS-Libchrome-Original-Commit: 904f19454a71c733205d9e68bc8faa93a6fdce3e
diff --git a/base/tuple.h b/base/tuple.h
index ef51d85..5a04858 100644
--- a/base/tuple.h
+++ b/base/tuple.h
@@ -150,7 +150,7 @@
struct TupleLeaf;
template <typename... Ts>
-struct Tuple : TupleBase<Ts...> {
+struct Tuple final : TupleBase<Ts...> {
Tuple() : TupleBase<Ts...>() {}
explicit Tuple(typename TupleTraits<Ts>::ParamType... args)
: TupleBase<Ts...>(args...) {}
@@ -158,7 +158,7 @@
// Avoids ambiguity between Tuple's two constructors.
template <>
-struct Tuple<> {};
+struct Tuple<> final {};
template <size_t... Ns, typename... Ts>
struct TupleBaseImpl<IndexSequence<Ns...>, Ts...> : TupleLeaf<Ns, Ts>... {