tuple: further generalize/simplify Tuple implementation

Instead of specially implementing Tuple for 0 to 8 arguments, use a
more traditional implementation by having Tuple<A, B, ...> inherit
from TupleLeaf<0, A>, TupleLeaf<1, B>, etc.  This allows Tuple to be
used with an arbitrary number of arguments.

To remain backwards compatible with code that accesses "t.a", "t.b",
etc., we specialize TupleLeaf for the first 8 elements to store their
values in appropriately named member variables.  These accessors work
even for Tuples with more than 8 elements, but the 9th element and
beyond are only supported with get<N>().

Review URL: https://codereview.chromium.org/792763002

Cr-Commit-Position: refs/heads/master@{#307681}
1 file changed