1f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// This file was GENERATED by command: 2f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// pump.py gtest-tuple.h.pump 3f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// DO NOT EDIT BY HAND!!! 4f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 5f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Copyright 2009 Google Inc. 6f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// All Rights Reserved. 7f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 8f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Redistribution and use in source and binary forms, with or without 9f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// modification, are permitted provided that the following conditions are 10f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// met: 11f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 12f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// * Redistributions of source code must retain the above copyright 13f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// notice, this list of conditions and the following disclaimer. 14f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// * Redistributions in binary form must reproduce the above 15f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// copyright notice, this list of conditions and the following disclaimer 16f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// in the documentation and/or other materials provided with the 17f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// distribution. 18f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// * Neither the name of Google Inc. nor the names of its 19f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// contributors may be used to endorse or promote products derived from 20f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// this software without specific prior written permission. 21f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 22f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 25f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 26f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 27f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 28f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 30f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 32f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 34f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Author: wan@google.com (Zhanyong Wan) 35f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 36f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Implements a subset of TR1 tuple needed by Google Test and Google Mock. 37f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 38f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ 39f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ 40f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 41f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include <utility> // For ::std::pair. 42f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 43f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// The compiler used in Symbian has a bug that prevents us from declaring the 44f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// tuple template as a friend (it complains that tuple is redefined). This 45f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// hack bypasses the bug by declaring the members that should otherwise be 46f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// private as public. 47f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Sun Studio versions < 12 also have the above bug. 48f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590) 49f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: 50f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#else 51f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ 52f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_10_TYPENAMES_(U)> friend class tuple; \ 53f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch private: 54f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#endif 55f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 56f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that conflict 57f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// with our own definitions. Therefore using our own tuple does not work on 58f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// those compilers. 59f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#if defined(_MSC_VER) && _MSC_VER >= 1600 /* 1600 is Visual Studio 2010 */ 60f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch# error "gtest's tuple doesn't compile on Visual Studio 2010 or later. \ 61f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochGTEST_USE_OWN_TR1_TUPLE must be set to 0 on those compilers." 62f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#endif 63f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 64f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// GTEST_n_TUPLE_(T) is the type of an n-tuple. 65f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_0_TUPLE_(T) tuple<> 66f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_1_TUPLE_(T) tuple<T##0, void, void, void, void, void, void, \ 67f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch void, void, void> 68f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_2_TUPLE_(T) tuple<T##0, T##1, void, void, void, void, void, \ 69f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch void, void, void> 70f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_3_TUPLE_(T) tuple<T##0, T##1, T##2, void, void, void, void, \ 71f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch void, void, void> 72f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_4_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, void, void, void, \ 73f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch void, void, void> 74f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_5_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, void, void, \ 75f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch void, void, void> 76f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_6_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, void, \ 77f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch void, void, void> 78f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_7_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ 79f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch void, void, void> 80f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_8_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ 81f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T##7, void, void> 82f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_9_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ 83f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T##7, T##8, void> 84f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_10_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ 85f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T##7, T##8, T##9> 86f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 87f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// GTEST_n_TYPENAMES_(T) declares a list of n typenames. 88f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_0_TYPENAMES_(T) 89f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_1_TYPENAMES_(T) typename T##0 90f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1 91f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2 92f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 93f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typename T##3 94f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 95f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typename T##3, typename T##4 96f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 97f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typename T##3, typename T##4, typename T##5 98f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 99f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typename T##3, typename T##4, typename T##5, typename T##6 100f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 101f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typename T##3, typename T##4, typename T##5, typename T##6, typename T##7 102f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 103f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typename T##3, typename T##4, typename T##5, typename T##6, \ 104f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typename T##7, typename T##8 105f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 106f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typename T##3, typename T##4, typename T##5, typename T##6, \ 107f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typename T##7, typename T##8, typename T##9 108f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 109f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// In theory, defining stuff in the ::std namespace is undefined 110f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// behavior. We can do this as we are playing the role of a standard 111f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// library vendor. 112f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochnamespace std { 113f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochnamespace tr1 { 114f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 115f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <typename T0 = void, typename T1 = void, typename T2 = void, 116f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typename T3 = void, typename T4 = void, typename T5 = void, 117f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typename T6 = void, typename T7 = void, typename T8 = void, 118f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typename T9 = void> 119f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass tuple; 120f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 121f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Anything in namespace gtest_internal is Google Test's INTERNAL 122f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code. 123f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochnamespace gtest_internal { 124f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 125f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// ByRef<T>::type is T if T is a reference; otherwise it's const T&. 126f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <typename T> 127f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct ByRef { typedef const T& type; }; // NOLINT 128f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <typename T> 129f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct ByRef<T&> { typedef T& type; }; // NOLINT 130f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 131f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// A handy wrapper for ByRef. 132f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type 133f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 134f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// AddRef<T>::type is T if T is a reference; otherwise it's T&. This 135f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// is the same as tr1::add_reference<T>::type. 136f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <typename T> 137f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct AddRef { typedef T& type; }; // NOLINT 138f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <typename T> 139f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct AddRef<T&> { typedef T& type; }; // NOLINT 140f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 141f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// A handy wrapper for AddRef. 142f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type 143f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 144f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// A helper for implementing get<k>(). 145f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <int k> class Get; 146f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 147f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// A helper for implementing tuple_element<k, T>. kIndexValid is true 148f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// iff k < the number of fields in tuple type T. 149f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <bool kIndexValid, int kIndex, class Tuple> 150f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct TupleElement; 151f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 152f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 153f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct TupleElement<true, 0, GTEST_10_TUPLE_(T) > { 154f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typedef T0 type; 155f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 156f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 157f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 158f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct TupleElement<true, 1, GTEST_10_TUPLE_(T) > { 159f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typedef T1 type; 160f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 161f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 162f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 163f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct TupleElement<true, 2, GTEST_10_TUPLE_(T) > { 164f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typedef T2 type; 165f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 166f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 167f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 168f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct TupleElement<true, 3, GTEST_10_TUPLE_(T) > { 169f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typedef T3 type; 170f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 171f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 172f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 173f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct TupleElement<true, 4, GTEST_10_TUPLE_(T) > { 174f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typedef T4 type; 175f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 176f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 177f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 178f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct TupleElement<true, 5, GTEST_10_TUPLE_(T) > { 179f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typedef T5 type; 180f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 181f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 182f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 183f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct TupleElement<true, 6, GTEST_10_TUPLE_(T) > { 184f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typedef T6 type; 185f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 186f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 187f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 188f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct TupleElement<true, 7, GTEST_10_TUPLE_(T) > { 189f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typedef T7 type; 190f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 191f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 192f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 193f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct TupleElement<true, 8, GTEST_10_TUPLE_(T) > { 194f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typedef T8 type; 195f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 196f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 197f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 198f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct TupleElement<true, 9, GTEST_10_TUPLE_(T) > { 199f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typedef T9 type; 200f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 201f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 202f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} // namespace gtest_internal 203f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 204f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <> 205f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass tuple<> { 206f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 207f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple() {} 208f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const tuple& /* t */) {} 209f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const tuple& /* t */) { return *this; } 210f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 211f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 212f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_1_TYPENAMES_(T)> 213f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass GTEST_1_TUPLE_(T) { 214f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 215f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <int k> friend class gtest_internal::Get; 216f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 217f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple() : f0_() {} 218f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 219f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {} 220f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 221f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const tuple& t) : f0_(t.f0_) {} 222f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 223f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_1_TYPENAMES_(U)> 224f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {} 225f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 226f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const tuple& t) { return CopyFrom(t); } 227f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 228f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_1_TYPENAMES_(U)> 229f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const GTEST_1_TUPLE_(U)& t) { 230f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return CopyFrom(t); 231f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 232f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 233f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_DECLARE_TUPLE_AS_FRIEND_ 234f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 235f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_1_TYPENAMES_(U)> 236f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) { 237f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f0_ = t.f0_; 238f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return *this; 239f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 240f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 241f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T0 f0_; 242f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 243f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 244f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_2_TYPENAMES_(T)> 245f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass GTEST_2_TUPLE_(T) { 246f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 247f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <int k> friend class gtest_internal::Get; 248f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 249f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple() : f0_(), f1_() {} 250f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 251f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0), 252f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f1_(f1) {} 253f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 254f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {} 255f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 256f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_2_TYPENAMES_(U)> 257f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {} 258f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <typename U0, typename U1> 259f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {} 260f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 261f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const tuple& t) { return CopyFrom(t); } 262f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 263f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_2_TYPENAMES_(U)> 264f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const GTEST_2_TUPLE_(U)& t) { 265f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return CopyFrom(t); 266f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 267f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <typename U0, typename U1> 268f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const ::std::pair<U0, U1>& p) { 269f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f0_ = p.first; 270f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f1_ = p.second; 271f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return *this; 272f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 273f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 274f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_DECLARE_TUPLE_AS_FRIEND_ 275f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 276f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_2_TYPENAMES_(U)> 277f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) { 278f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f0_ = t.f0_; 279f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f1_ = t.f1_; 280f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return *this; 281f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 282f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 283f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T0 f0_; 284f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T1 f1_; 285f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 286f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 287f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_3_TYPENAMES_(T)> 288f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass GTEST_3_TUPLE_(T) { 289f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 290f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <int k> friend class gtest_internal::Get; 291f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 292f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple() : f0_(), f1_(), f2_() {} 293f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 294f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 295f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {} 296f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 297f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} 298f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 299f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_3_TYPENAMES_(U)> 300f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} 301f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 302f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const tuple& t) { return CopyFrom(t); } 303f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 304f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_3_TYPENAMES_(U)> 305f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const GTEST_3_TUPLE_(U)& t) { 306f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return CopyFrom(t); 307f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 308f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 309f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_DECLARE_TUPLE_AS_FRIEND_ 310f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 311f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_3_TYPENAMES_(U)> 312f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) { 313f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f0_ = t.f0_; 314f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f1_ = t.f1_; 315f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f2_ = t.f2_; 316f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return *this; 317f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 318f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 319f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T0 f0_; 320f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T1 f1_; 321f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T2 f2_; 322f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 323f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 324f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_4_TYPENAMES_(T)> 325f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass GTEST_4_TUPLE_(T) { 326f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 327f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <int k> friend class gtest_internal::Get; 328f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 329f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple() : f0_(), f1_(), f2_(), f3_() {} 330f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 331f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 332f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2), 333f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_(f3) {} 334f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 335f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {} 336f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 337f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_4_TYPENAMES_(U)> 338f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 339f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_(t.f3_) {} 340f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 341f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const tuple& t) { return CopyFrom(t); } 342f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 343f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_4_TYPENAMES_(U)> 344f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const GTEST_4_TUPLE_(U)& t) { 345f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return CopyFrom(t); 346f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 347f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 348f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_DECLARE_TUPLE_AS_FRIEND_ 349f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 350f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_4_TYPENAMES_(U)> 351f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) { 352f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f0_ = t.f0_; 353f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f1_ = t.f1_; 354f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f2_ = t.f2_; 355f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_ = t.f3_; 356f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return *this; 357f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 358f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 359f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T0 f0_; 360f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T1 f1_; 361f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T2 f2_; 362f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T3 f3_; 363f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 364f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 365f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_5_TYPENAMES_(T)> 366f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass GTEST_5_TUPLE_(T) { 367f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 368f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <int k> friend class gtest_internal::Get; 369f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 370f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {} 371f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 372f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 373f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, 374f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {} 375f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 376f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 377f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f4_(t.f4_) {} 378f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 379f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_5_TYPENAMES_(U)> 380f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 381f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_(t.f3_), f4_(t.f4_) {} 382f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 383f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const tuple& t) { return CopyFrom(t); } 384f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 385f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_5_TYPENAMES_(U)> 386f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const GTEST_5_TUPLE_(U)& t) { 387f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return CopyFrom(t); 388f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 389f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 390f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_DECLARE_TUPLE_AS_FRIEND_ 391f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 392f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_5_TYPENAMES_(U)> 393f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) { 394f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f0_ = t.f0_; 395f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f1_ = t.f1_; 396f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f2_ = t.f2_; 397f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_ = t.f3_; 398f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f4_ = t.f4_; 399f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return *this; 400f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 401f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 402f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T0 f0_; 403f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T1 f1_; 404f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T2 f2_; 405f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T3 f3_; 406f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T4 f4_; 407f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 408f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 409f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_6_TYPENAMES_(T)> 410f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass GTEST_6_TUPLE_(T) { 411f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 412f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <int k> friend class gtest_internal::Get; 413f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 414f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {} 415f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 416f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 417f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 418f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), 419f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f5_(f5) {} 420f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 421f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 422f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f4_(t.f4_), f5_(t.f5_) {} 423f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 424f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_6_TYPENAMES_(U)> 425f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 426f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {} 427f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 428f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const tuple& t) { return CopyFrom(t); } 429f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 430f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_6_TYPENAMES_(U)> 431f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const GTEST_6_TUPLE_(U)& t) { 432f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return CopyFrom(t); 433f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 434f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 435f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_DECLARE_TUPLE_AS_FRIEND_ 436f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 437f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_6_TYPENAMES_(U)> 438f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) { 439f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f0_ = t.f0_; 440f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f1_ = t.f1_; 441f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f2_ = t.f2_; 442f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_ = t.f3_; 443f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f4_ = t.f4_; 444f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f5_ = t.f5_; 445f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return *this; 446f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 447f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 448f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T0 f0_; 449f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T1 f1_; 450f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T2 f2_; 451f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T3 f3_; 452f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T4 f4_; 453f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T5 f5_; 454f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 455f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 456f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_7_TYPENAMES_(T)> 457f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass GTEST_7_TUPLE_(T) { 458f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 459f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <int k> friend class gtest_internal::Get; 460f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 461f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {} 462f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 463f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 464f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 465f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2), 466f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_(f3), f4_(f4), f5_(f5), f6_(f6) {} 467f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 468f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 469f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} 470f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 471f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_7_TYPENAMES_(U)> 472f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 473f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} 474f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 475f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const tuple& t) { return CopyFrom(t); } 476f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 477f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_7_TYPENAMES_(U)> 478f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const GTEST_7_TUPLE_(U)& t) { 479f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return CopyFrom(t); 480f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 481f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 482f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_DECLARE_TUPLE_AS_FRIEND_ 483f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 484f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_7_TYPENAMES_(U)> 485f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) { 486f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f0_ = t.f0_; 487f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f1_ = t.f1_; 488f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f2_ = t.f2_; 489f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_ = t.f3_; 490f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f4_ = t.f4_; 491f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f5_ = t.f5_; 492f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f6_ = t.f6_; 493f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return *this; 494f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 495f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 496f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T0 f0_; 497f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T1 f1_; 498f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T2 f2_; 499f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T3 f3_; 500f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T4 f4_; 501f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T5 f5_; 502f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T6 f6_; 503f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 504f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 505f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_8_TYPENAMES_(T)> 506f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass GTEST_8_TUPLE_(T) { 507f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 508f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <int k> friend class gtest_internal::Get; 509f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 510f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {} 511f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 512f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 513f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 514f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, 515f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), 516f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f5_(f5), f6_(f6), f7_(f7) {} 517f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 518f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 519f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} 520f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 521f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_8_TYPENAMES_(U)> 522f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 523f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} 524f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 525f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const tuple& t) { return CopyFrom(t); } 526f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 527f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_8_TYPENAMES_(U)> 528f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const GTEST_8_TUPLE_(U)& t) { 529f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return CopyFrom(t); 530f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 531f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 532f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_DECLARE_TUPLE_AS_FRIEND_ 533f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 534f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_8_TYPENAMES_(U)> 535f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) { 536f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f0_ = t.f0_; 537f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f1_ = t.f1_; 538f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f2_ = t.f2_; 539f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_ = t.f3_; 540f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f4_ = t.f4_; 541f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f5_ = t.f5_; 542f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f6_ = t.f6_; 543f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f7_ = t.f7_; 544f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return *this; 545f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 546f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 547f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T0 f0_; 548f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T1 f1_; 549f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T2 f2_; 550f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T3 f3_; 551f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T4 f4_; 552f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T5 f5_; 553f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T6 f6_; 554f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T7 f7_; 555f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 556f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 557f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_9_TYPENAMES_(T)> 558f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass GTEST_9_TUPLE_(T) { 559f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 560f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <int k> friend class gtest_internal::Get; 561f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 562f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {} 563f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 564f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 565f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 566f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, 567f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), 568f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f5_(f5), f6_(f6), f7_(f7), f8_(f8) {} 569f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 570f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 571f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} 572f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 573f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_9_TYPENAMES_(U)> 574f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 575f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} 576f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 577f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const tuple& t) { return CopyFrom(t); } 578f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 579f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_9_TYPENAMES_(U)> 580f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const GTEST_9_TUPLE_(U)& t) { 581f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return CopyFrom(t); 582f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 583f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 584f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_DECLARE_TUPLE_AS_FRIEND_ 585f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 586f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_9_TYPENAMES_(U)> 587f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) { 588f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f0_ = t.f0_; 589f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f1_ = t.f1_; 590f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f2_ = t.f2_; 591f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_ = t.f3_; 592f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f4_ = t.f4_; 593f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f5_ = t.f5_; 594f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f6_ = t.f6_; 595f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f7_ = t.f7_; 596f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f8_ = t.f8_; 597f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return *this; 598f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 599f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 600f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T0 f0_; 601f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T1 f1_; 602f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T2 f2_; 603f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T3 f3_; 604f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T4 f4_; 605f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T5 f5_; 606f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T6 f6_; 607f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T7 f7_; 608f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T8 f8_; 609f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 610f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 611f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 612f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass tuple { 613f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 614f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <int k> friend class gtest_internal::Get; 615f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 616f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(), 617f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f9_() {} 618f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 619f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 620f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 621f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, 622f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2), 623f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {} 624f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 625f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 626f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {} 627f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 628f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_10_TYPENAMES_(U)> 629f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 630f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), 631f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f9_(t.f9_) {} 632f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 633f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const tuple& t) { return CopyFrom(t); } 634f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 635f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_10_TYPENAMES_(U)> 636f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& operator=(const GTEST_10_TUPLE_(U)& t) { 637f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return CopyFrom(t); 638f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 639f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 640f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch GTEST_DECLARE_TUPLE_AS_FRIEND_ 641f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 642f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <GTEST_10_TYPENAMES_(U)> 643f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) { 644f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f0_ = t.f0_; 645f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f1_ = t.f1_; 646f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f2_ = t.f2_; 647f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f3_ = t.f3_; 648f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f4_ = t.f4_; 649f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f5_ = t.f5_; 650f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f6_ = t.f6_; 651f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f7_ = t.f7_; 652f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f8_ = t.f8_; 653f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch f9_ = t.f9_; 654f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return *this; 655f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 656f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 657f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T0 f0_; 658f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T1 f1_; 659f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T2 f2_; 660f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T3 f3_; 661f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T4 f4_; 662f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T5 f5_; 663f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T6 f6_; 664f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T7 f7_; 665f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T8 f8_; 666f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch T9 f9_; 667f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 668f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 669f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 6.1.3.2 Tuple creation functions. 670f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 671f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Known limitations: we don't support passing an 672f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// std::tr1::reference_wrapper<T> to make_tuple(). And we don't 673f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// implement tie(). 674f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 675f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline tuple<> make_tuple() { return tuple<>(); } 676f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 677f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_1_TYPENAMES_(T)> 678f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) { 679f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return GTEST_1_TUPLE_(T)(f0); 680f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 681f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 682f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_2_TYPENAMES_(T)> 683f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) { 684f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return GTEST_2_TUPLE_(T)(f0, f1); 685f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 686f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 687f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_3_TYPENAMES_(T)> 688f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) { 689f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return GTEST_3_TUPLE_(T)(f0, f1, f2); 690f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 691f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 692f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_4_TYPENAMES_(T)> 693f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 694f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch const T3& f3) { 695f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return GTEST_4_TUPLE_(T)(f0, f1, f2, f3); 696f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 697f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 698f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_5_TYPENAMES_(T)> 699f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 700f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch const T3& f3, const T4& f4) { 701f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4); 702f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 703f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 704f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_6_TYPENAMES_(T)> 705f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 706f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch const T3& f3, const T4& f4, const T5& f5) { 707f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5); 708f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 709f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 710f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_7_TYPENAMES_(T)> 711f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 712f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch const T3& f3, const T4& f4, const T5& f5, const T6& f6) { 713f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6); 714f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 715f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 716f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_8_TYPENAMES_(T)> 717f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 718f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) { 719f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7); 720f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 721f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 722f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_9_TYPENAMES_(T)> 723f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 724f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, 725f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch const T8& f8) { 726f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8); 727f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 728f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 729f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 730f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 731f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, 732f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch const T8& f8, const T9& f9) { 733f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9); 734f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 735f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 736f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 6.1.3.3 Tuple helper classes. 737f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 738f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <typename Tuple> struct tuple_size; 739f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 740f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_0_TYPENAMES_(T)> 741f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct tuple_size<GTEST_0_TUPLE_(T) > { 742f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static const int value = 0; 743f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 744f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 745f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_1_TYPENAMES_(T)> 746f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct tuple_size<GTEST_1_TUPLE_(T) > { 747f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static const int value = 1; 748f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 749f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 750f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_2_TYPENAMES_(T)> 751f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct tuple_size<GTEST_2_TUPLE_(T) > { 752f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static const int value = 2; 753f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 754f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 755f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_3_TYPENAMES_(T)> 756f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct tuple_size<GTEST_3_TUPLE_(T) > { 757f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static const int value = 3; 758f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 759f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 760f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_4_TYPENAMES_(T)> 761f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct tuple_size<GTEST_4_TUPLE_(T) > { 762f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static const int value = 4; 763f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 764f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 765f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_5_TYPENAMES_(T)> 766f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct tuple_size<GTEST_5_TUPLE_(T) > { 767f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static const int value = 5; 768f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 769f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 770f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_6_TYPENAMES_(T)> 771f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct tuple_size<GTEST_6_TUPLE_(T) > { 772f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static const int value = 6; 773f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 774f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 775f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_7_TYPENAMES_(T)> 776f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct tuple_size<GTEST_7_TUPLE_(T) > { 777f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static const int value = 7; 778f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 779f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 780f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_8_TYPENAMES_(T)> 781f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct tuple_size<GTEST_8_TUPLE_(T) > { 782f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static const int value = 8; 783f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 784f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 785f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_9_TYPENAMES_(T)> 786f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct tuple_size<GTEST_9_TUPLE_(T) > { 787f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static const int value = 9; 788f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 789f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 790f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T)> 791f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct tuple_size<GTEST_10_TUPLE_(T) > { 792f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static const int value = 10; 793f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 794f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 795f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <int k, class Tuple> 796f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct tuple_element { 797f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch typedef typename gtest_internal::TupleElement< 798f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch k < (tuple_size<Tuple>::value), k, Tuple>::type type; 799f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 800f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 801f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type 802f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 803f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 6.1.3.4 Element access. 804f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 805f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochnamespace gtest_internal { 806f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 807f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <> 808f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass Get<0> { 809f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 810f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 811f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) 812f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Field(Tuple& t) { return t.f0_; } // NOLINT 813f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 814f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 815f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) 816f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ConstField(const Tuple& t) { return t.f0_; } 817f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 818f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 819f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <> 820f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass Get<1> { 821f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 822f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 823f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) 824f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Field(Tuple& t) { return t.f1_; } // NOLINT 825f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 826f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 827f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) 828f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ConstField(const Tuple& t) { return t.f1_; } 829f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 830f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 831f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <> 832f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass Get<2> { 833f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 834f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 835f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) 836f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Field(Tuple& t) { return t.f2_; } // NOLINT 837f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 838f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 839f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) 840f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ConstField(const Tuple& t) { return t.f2_; } 841f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 842f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 843f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <> 844f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass Get<3> { 845f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 846f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 847f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) 848f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Field(Tuple& t) { return t.f3_; } // NOLINT 849f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 850f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 851f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) 852f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ConstField(const Tuple& t) { return t.f3_; } 853f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 854f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 855f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <> 856f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass Get<4> { 857f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 858f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 859f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) 860f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Field(Tuple& t) { return t.f4_; } // NOLINT 861f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 862f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 863f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) 864f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ConstField(const Tuple& t) { return t.f4_; } 865f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 866f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 867f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <> 868f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass Get<5> { 869f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 870f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 871f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) 872f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Field(Tuple& t) { return t.f5_; } // NOLINT 873f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 874f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 875f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) 876f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ConstField(const Tuple& t) { return t.f5_; } 877f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 878f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 879f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <> 880f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass Get<6> { 881f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 882f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 883f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) 884f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Field(Tuple& t) { return t.f6_; } // NOLINT 885f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 886f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 887f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) 888f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ConstField(const Tuple& t) { return t.f6_; } 889f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 890f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 891f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <> 892f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass Get<7> { 893f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 894f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 895f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) 896f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Field(Tuple& t) { return t.f7_; } // NOLINT 897f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 898f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 899f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) 900f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ConstField(const Tuple& t) { return t.f7_; } 901f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 902f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 903f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <> 904f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass Get<8> { 905f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 906f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 907f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) 908f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Field(Tuple& t) { return t.f8_; } // NOLINT 909f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 910f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 911f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) 912f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ConstField(const Tuple& t) { return t.f8_; } 913f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 914f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 915f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <> 916f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochclass Get<9> { 917f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch public: 918f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 919f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) 920f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Field(Tuple& t) { return t.f9_; } // NOLINT 921f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 922f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple> 923f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) 924f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ConstField(const Tuple& t) { return t.f9_; } 925f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 926f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 927f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} // namespace gtest_internal 928f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 929f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <int k, GTEST_10_TYPENAMES_(T)> 930f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochGTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) 931f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochget(GTEST_10_TUPLE_(T)& t) { 932f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return gtest_internal::Get<k>::Field(t); 933f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 934f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 935f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <int k, GTEST_10_TYPENAMES_(T)> 936f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochGTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) 937f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochget(const GTEST_10_TUPLE_(T)& t) { 938f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return gtest_internal::Get<k>::ConstField(t); 939f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 940f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 941f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 6.1.3.5 Relational operators 942f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 943f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// We only implement == and !=, as we don't have a need for the rest yet. 944f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 945f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochnamespace gtest_internal { 946f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 947f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// SameSizeTuplePrefixComparator<k, k>::Eq(t1, t2) returns true if the 948f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// first k fields of t1 equals the first k fields of t2. 949f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if 950f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// k1 != k2. 951f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <int kSize1, int kSize2> 952f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct SameSizeTuplePrefixComparator; 953f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 954f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <> 955f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct SameSizeTuplePrefixComparator<0, 0> { 956f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple1, class Tuple2> 957f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) { 958f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return true; 959f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 960f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 961f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 962f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <int k> 963f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochstruct SameSizeTuplePrefixComparator<k, k> { 964f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch template <class Tuple1, class Tuple2> 965f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch static bool Eq(const Tuple1& t1, const Tuple2& t2) { 966f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) && 967f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2); 968f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch } 969f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}; 970f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 971f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} // namespace gtest_internal 972f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 973f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)> 974f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline bool operator==(const GTEST_10_TUPLE_(T)& t, 975f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch const GTEST_10_TUPLE_(U)& u) { 976f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return gtest_internal::SameSizeTuplePrefixComparator< 977f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple_size<GTEST_10_TUPLE_(T) >::value, 978f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch tuple_size<GTEST_10_TUPLE_(U) >::value>::Eq(t, u); 979f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 980f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 981f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochtemplate <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)> 982f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochinline bool operator!=(const GTEST_10_TUPLE_(T)& t, 983f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch const GTEST_10_TUPLE_(U)& u) { return !(t == u); } 984f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 985f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 6.1.4 Pairs. 986f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Unimplemented. 987f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 988f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} // namespace tr1 989f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} // namespace std 990f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 991f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_0_TUPLE_ 992f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_1_TUPLE_ 993f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_2_TUPLE_ 994f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_3_TUPLE_ 995f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_4_TUPLE_ 996f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_5_TUPLE_ 997f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_6_TUPLE_ 998f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_7_TUPLE_ 999f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_8_TUPLE_ 1000f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_9_TUPLE_ 1001f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_10_TUPLE_ 1002f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1003f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_0_TYPENAMES_ 1004f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_1_TYPENAMES_ 1005f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_2_TYPENAMES_ 1006f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_3_TYPENAMES_ 1007f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_4_TYPENAMES_ 1008f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_5_TYPENAMES_ 1009f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_6_TYPENAMES_ 1010f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_7_TYPENAMES_ 1011f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_8_TYPENAMES_ 1012f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_9_TYPENAMES_ 1013f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_10_TYPENAMES_ 1014f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1015f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_DECLARE_TUPLE_AS_FRIEND_ 1016f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_BY_REF_ 1017f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_ADD_REF_ 1018f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#undef GTEST_TUPLE_ELEMENT_ 1019f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 1020f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ 1021