115template <
typename T0 = void,
typename T1 = void,
typename T2 = void,
116 typename T3 = void,
typename T4 = void,
typename T5 = void,
117 typename T6 = void,
typename T7 = void,
typename T8 = void,
123namespace gtest_internal {
132#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type
142#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type
145template <
int k>
class Get;
149template <
bool kIndexVal
id,
int kIndex,
class Tuple>
152template <GTEST_10_TYPENAMES_(T)>
157template <GTEST_10_TYPENAMES_(T)>
162template <GTEST_10_TYPENAMES_(T)>
167template <GTEST_10_TYPENAMES_(T)>
172template <GTEST_10_TYPENAMES_(T)>
177template <GTEST_10_TYPENAMES_(T)>
182template <GTEST_10_TYPENAMES_(T)>
187template <GTEST_10_TYPENAMES_(T)>
192template <GTEST_10_TYPENAMES_(T)>
197template <GTEST_10_TYPENAMES_(T)>
212template <GTEST_1_TYPENAMES_(T)>
213class GTEST_1_TUPLE_(T) {
215 template <
int k>
friend class gtest_internal::Get;
221 tuple(
const tuple& t) : f0_(t.f0_) {}
223 template <GTEST_1_TYPENAMES_(U)>
226 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
228 template <GTEST_1_TYPENAMES_(U)>
235 template <GTEST_1_TYPENAMES_(U)>
244template <GTEST_2_TYPENAMES_(T)>
245class GTEST_2_TUPLE_(T) {
247 template <
int k>
friend class gtest_internal::Get;
249 tuple() : f0_(), f1_() {}
254 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_) {}
256 template <GTEST_2_TYPENAMES_(U)>
258 template <
typename U0,
typename U1>
259 tuple(const ::std::pair<U0, U1>&
p) : f0_(
p.first), f1_(
p.second) {}
261 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
263 template <GTEST_2_TYPENAMES_(U)>
267 template <
typename U0,
typename U1>
268 tuple& operator=(const ::std::pair<U0, U1>&
p) {
276 template <GTEST_2_TYPENAMES_(U)>
287template <GTEST_3_TYPENAMES_(T)>
288class GTEST_3_TUPLE_(T) {
290 template <
int k>
friend class gtest_internal::Get;
292 tuple() : f0_(), f1_(), f2_() {}
297 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
299 template <GTEST_3_TYPENAMES_(U)>
300 tuple(
const GTEST_3_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
302 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
304 template <GTEST_3_TYPENAMES_(U)>
311 template <GTEST_3_TYPENAMES_(U)>
324template <GTEST_4_TYPENAMES_(T)>
325class GTEST_4_TUPLE_(T) {
327 template <
int k>
friend class gtest_internal::Get;
329 tuple() : f0_(), f1_(), f2_(), f3_() {}
335 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {}
337 template <GTEST_4_TYPENAMES_(U)>
338 tuple(
const GTEST_4_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
341 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
343 template <GTEST_4_TYPENAMES_(U)>
350 template <GTEST_4_TYPENAMES_(U)>
365template <GTEST_5_TYPENAMES_(T)>
366class GTEST_5_TUPLE_(T) {
368 template <
int k>
friend class gtest_internal::Get;
370 tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {}
376 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
379 template <GTEST_5_TYPENAMES_(U)>
380 tuple(
const GTEST_5_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
381 f3_(t.f3_), f4_(t.f4_) {}
383 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
385 template <GTEST_5_TYPENAMES_(U)>
392 template <GTEST_5_TYPENAMES_(U)>
409template <GTEST_6_TYPENAMES_(T)>
410class GTEST_6_TUPLE_(T) {
412 template <
int k>
friend class gtest_internal::Get;
414 tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {}
421 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
422 f4_(t.f4_), f5_(t.f5_) {}
424 template <GTEST_6_TYPENAMES_(U)>
425 tuple(
const GTEST_6_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
426 f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {}
428 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
430 template <GTEST_6_TYPENAMES_(U)>
437 template <GTEST_6_TYPENAMES_(U)>
456template <GTEST_7_TYPENAMES_(T)>
457class GTEST_7_TUPLE_(T) {
459 template <
int k>
friend class gtest_internal::Get;
461 tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {}
466 f3_(
f3), f4_(
f4), f5_(
f5), f6_(
f6) {}
468 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
469 f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
471 template <GTEST_7_TYPENAMES_(U)>
472 tuple(
const GTEST_7_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
473 f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
475 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
477 template <GTEST_7_TYPENAMES_(U)>
484 template <GTEST_7_TYPENAMES_(U)>
505template <GTEST_8_TYPENAMES_(T)>
506class GTEST_8_TUPLE_(T) {
508 template <
int k>
friend class gtest_internal::Get;
510 tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {}
516 f5_(
f5), f6_(
f6), f7_(
f7) {}
518 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
519 f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
521 template <GTEST_8_TYPENAMES_(U)>
522 tuple(
const GTEST_8_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
523 f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
525 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
527 template <GTEST_8_TYPENAMES_(U)>
534 template <GTEST_8_TYPENAMES_(U)>
557template <GTEST_9_TYPENAMES_(T)>
558class GTEST_9_TUPLE_(T) {
560 template <
int k>
friend class gtest_internal::Get;
562 tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {}
568 f5_(
f5), f6_(
f6), f7_(
f7), f8_(
f8) {}
570 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
571 f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
573 template <GTEST_9_TYPENAMES_(U)>
574 tuple(
const GTEST_9_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
575 f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
577 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
579 template <GTEST_9_TYPENAMES_(U)>
586 template <GTEST_9_TYPENAMES_(U)>
611template <GTEST_10_TYPENAMES_(T)>
616 tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(),
625 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
626 f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {}
628 template <GTEST_10_TYPENAMES_(U)>
630 f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_),
635 template <GTEST_10_TYPENAMES_(U)>
642 template <GTEST_10_TYPENAMES_(U)>
677template <GTEST_1_TYPENAMES_(T)>
682template <GTEST_2_TYPENAMES_(T)>
687template <GTEST_3_TYPENAMES_(T)>
692template <GTEST_4_TYPENAMES_(T)>
698template <GTEST_5_TYPENAMES_(T)>
700 const T3& f3,
const T4& f4) {
704template <GTEST_6_TYPENAMES_(T)>
706 const T3& f3,
const T4& f4,
const T5& f5) {
710template <GTEST_7_TYPENAMES_(T)>
712 const T3& f3,
const T4& f4,
const T5& f5,
const T6& f6) {
716template <GTEST_8_TYPENAMES_(T)>
718 const T3& f3,
const T4& f4,
const T5& f5,
const T6& f6,
const T7& f7) {
722template <GTEST_9_TYPENAMES_(T)>
724 const T3& f3,
const T4& f4,
const T5& f5,
const T6& f6,
const T7& f7,
729template <GTEST_10_TYPENAMES_(T)>
731 const T3& f3,
const T4& f4,
const T5& f5,
const T6& f6,
const T7& f7,
732 const T8& f8,
const T9& f9) {
740template <GTEST_0_TYPENAMES_(T)>
745template <GTEST_1_TYPENAMES_(T)>
750template <GTEST_2_TYPENAMES_(T)>
755template <GTEST_3_TYPENAMES_(T)>
760template <GTEST_4_TYPENAMES_(T)>
765template <GTEST_5_TYPENAMES_(T)>
770template <GTEST_6_TYPENAMES_(T)>
775template <GTEST_7_TYPENAMES_(T)>
780template <GTEST_8_TYPENAMES_(T)>
785template <GTEST_9_TYPENAMES_(T)>
790template <GTEST_10_TYPENAMES_(T)>
795template <
int k,
class Tuple>
801#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type
805namespace gtest_internal {
810 template <
class Tuple>
812 Field(Tuple& t) {
return t.f0_; }
814 template <
class Tuple>
816 ConstField(
const Tuple& t) {
return t.f0_; }
822 template <
class Tuple>
824 Field(Tuple& t) {
return t.f1_; }
826 template <
class Tuple>
828 ConstField(
const Tuple& t) {
return t.f1_; }
834 template <
class Tuple>
836 Field(Tuple& t) {
return t.f2_; }
838 template <
class Tuple>
840 ConstField(
const Tuple& t) {
return t.f2_; }
846 template <
class Tuple>
848 Field(Tuple& t) {
return t.f3_; }
850 template <
class Tuple>
852 ConstField(
const Tuple& t) {
return t.f3_; }
858 template <
class Tuple>
860 Field(Tuple& t) {
return t.f4_; }
862 template <
class Tuple>
864 ConstField(
const Tuple& t) {
return t.f4_; }
870 template <
class Tuple>
872 Field(Tuple& t) {
return t.f5_; }
874 template <
class Tuple>
876 ConstField(
const Tuple& t) {
return t.f5_; }
882 template <
class Tuple>
884 Field(Tuple& t) {
return t.f6_; }
886 template <
class Tuple>
888 ConstField(
const Tuple& t) {
return t.f6_; }
894 template <
class Tuple>
896 Field(Tuple& t) {
return t.f7_; }
898 template <
class Tuple>
900 ConstField(
const Tuple& t) {
return t.f7_; }
906 template <
class Tuple>
908 Field(Tuple& t) {
return t.f8_; }
910 template <
class Tuple>
912 ConstField(
const Tuple& t) {
return t.f8_; }
918 template <
class Tuple>
920 Field(Tuple& t) {
return t.f9_; }
922 template <
class Tuple>
924 ConstField(
const Tuple& t) {
return t.f9_; }
929template <
int k, GTEST_10_TYPENAMES_(T)>
935template <
int k, GTEST_10_TYPENAMES_(T)>
945namespace gtest_internal {
951template <
int kSize1,
int kSize2>
956 template <
class Tuple1,
class Tuple2>
957 static bool Eq(
const Tuple1& ,
const Tuple2& ) {
964 template <
class Tuple1,
class Tuple2>
965 static bool Eq(
const Tuple1& t1,
const Tuple2& t2) {
967 ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2);
973template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
981template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>