113481Sgiacomo.travaglini@arm.com// This file was GENERATED by command:
213481Sgiacomo.travaglini@arm.com//     pump.py gtest-type-util.h.pump
313481Sgiacomo.travaglini@arm.com// DO NOT EDIT BY HAND!!!
413481Sgiacomo.travaglini@arm.com
513481Sgiacomo.travaglini@arm.com// Copyright 2008 Google Inc.
613481Sgiacomo.travaglini@arm.com// All Rights Reserved.
713481Sgiacomo.travaglini@arm.com//
813481Sgiacomo.travaglini@arm.com// Redistribution and use in source and binary forms, with or without
913481Sgiacomo.travaglini@arm.com// modification, are permitted provided that the following conditions are
1013481Sgiacomo.travaglini@arm.com// met:
1113481Sgiacomo.travaglini@arm.com//
1213481Sgiacomo.travaglini@arm.com//     * Redistributions of source code must retain the above copyright
1313481Sgiacomo.travaglini@arm.com// notice, this list of conditions and the following disclaimer.
1413481Sgiacomo.travaglini@arm.com//     * Redistributions in binary form must reproduce the above
1513481Sgiacomo.travaglini@arm.com// copyright notice, this list of conditions and the following disclaimer
1613481Sgiacomo.travaglini@arm.com// in the documentation and/or other materials provided with the
1713481Sgiacomo.travaglini@arm.com// distribution.
1813481Sgiacomo.travaglini@arm.com//     * Neither the name of Google Inc. nor the names of its
1913481Sgiacomo.travaglini@arm.com// contributors may be used to endorse or promote products derived from
2013481Sgiacomo.travaglini@arm.com// this software without specific prior written permission.
2113481Sgiacomo.travaglini@arm.com//
2213481Sgiacomo.travaglini@arm.com// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2313481Sgiacomo.travaglini@arm.com// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2413481Sgiacomo.travaglini@arm.com// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2513481Sgiacomo.travaglini@arm.com// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2613481Sgiacomo.travaglini@arm.com// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2713481Sgiacomo.travaglini@arm.com// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2813481Sgiacomo.travaglini@arm.com// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2913481Sgiacomo.travaglini@arm.com// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
3013481Sgiacomo.travaglini@arm.com// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3113481Sgiacomo.travaglini@arm.com// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3213481Sgiacomo.travaglini@arm.com// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3313481Sgiacomo.travaglini@arm.com//
3413481Sgiacomo.travaglini@arm.com// Author: wan@google.com (Zhanyong Wan)
3513481Sgiacomo.travaglini@arm.com
3613481Sgiacomo.travaglini@arm.com// Type utilities needed for implementing typed and type-parameterized
3713481Sgiacomo.travaglini@arm.com// tests.  This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!
3813481Sgiacomo.travaglini@arm.com//
3913481Sgiacomo.travaglini@arm.com// Currently we support at most 50 types in a list, and at most 50
4013481Sgiacomo.travaglini@arm.com// type-parameterized tests in one type-parameterized test case.
4113481Sgiacomo.travaglini@arm.com// Please contact googletestframework@googlegroups.com if you need
4213481Sgiacomo.travaglini@arm.com// more.
4313481Sgiacomo.travaglini@arm.com
4413481Sgiacomo.travaglini@arm.com#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
4513481Sgiacomo.travaglini@arm.com#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
4613481Sgiacomo.travaglini@arm.com
4713481Sgiacomo.travaglini@arm.com#include "gtest/internal/gtest-port.h"
4813481Sgiacomo.travaglini@arm.com
4913481Sgiacomo.travaglini@arm.com// #ifdef __GNUC__ is too general here.  It is possible to use gcc without using
5013481Sgiacomo.travaglini@arm.com// libstdc++ (which is where cxxabi.h comes from).
5113481Sgiacomo.travaglini@arm.com# if GTEST_HAS_CXXABI_H_
5213481Sgiacomo.travaglini@arm.com#  include <cxxabi.h>
5313481Sgiacomo.travaglini@arm.com# elif defined(__HP_aCC)
5413481Sgiacomo.travaglini@arm.com#  include <acxx_demangle.h>
5513481Sgiacomo.travaglini@arm.com# endif  // GTEST_HASH_CXXABI_H_
5613481Sgiacomo.travaglini@arm.com
5713481Sgiacomo.travaglini@arm.comnamespace testing {
5813481Sgiacomo.travaglini@arm.comnamespace internal {
5913481Sgiacomo.travaglini@arm.com
6013481Sgiacomo.travaglini@arm.com// GetTypeName<T>() returns a human-readable name of type T.
6113481Sgiacomo.travaglini@arm.com// NB: This function is also used in Google Mock, so don't move it inside of
6213481Sgiacomo.travaglini@arm.com// the typed-test-only section below.
6313481Sgiacomo.travaglini@arm.comtemplate <typename T>
6413481Sgiacomo.travaglini@arm.comstd::string GetTypeName() {
6513481Sgiacomo.travaglini@arm.com# if GTEST_HAS_RTTI
6613481Sgiacomo.travaglini@arm.com
6713481Sgiacomo.travaglini@arm.com  const char* const name = typeid(T).name();
6813481Sgiacomo.travaglini@arm.com#  if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
6913481Sgiacomo.travaglini@arm.com  int status = 0;
7013481Sgiacomo.travaglini@arm.com  // gcc's implementation of typeid(T).name() mangles the type name,
7113481Sgiacomo.travaglini@arm.com  // so we have to demangle it.
7213481Sgiacomo.travaglini@arm.com#   if GTEST_HAS_CXXABI_H_
7313481Sgiacomo.travaglini@arm.com  using abi::__cxa_demangle;
7413481Sgiacomo.travaglini@arm.com#   endif  // GTEST_HAS_CXXABI_H_
7513481Sgiacomo.travaglini@arm.com  char* const readable_name = __cxa_demangle(name, 0, 0, &status);
7613481Sgiacomo.travaglini@arm.com  const std::string name_str(status == 0 ? readable_name : name);
7713481Sgiacomo.travaglini@arm.com  free(readable_name);
7813481Sgiacomo.travaglini@arm.com  return name_str;
7913481Sgiacomo.travaglini@arm.com#  else
8013481Sgiacomo.travaglini@arm.com  return name;
8113481Sgiacomo.travaglini@arm.com#  endif  // GTEST_HAS_CXXABI_H_ || __HP_aCC
8213481Sgiacomo.travaglini@arm.com
8313481Sgiacomo.travaglini@arm.com# else
8413481Sgiacomo.travaglini@arm.com
8513481Sgiacomo.travaglini@arm.com  return "<type>";
8613481Sgiacomo.travaglini@arm.com
8713481Sgiacomo.travaglini@arm.com# endif  // GTEST_HAS_RTTI
8813481Sgiacomo.travaglini@arm.com}
8913481Sgiacomo.travaglini@arm.com
9013481Sgiacomo.travaglini@arm.com#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
9113481Sgiacomo.travaglini@arm.com
9213481Sgiacomo.travaglini@arm.com// AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same
9313481Sgiacomo.travaglini@arm.com// type.  This can be used as a compile-time assertion to ensure that
9413481Sgiacomo.travaglini@arm.com// two types are equal.
9513481Sgiacomo.travaglini@arm.com
9613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2>
9713481Sgiacomo.travaglini@arm.comstruct AssertTypeEq;
9813481Sgiacomo.travaglini@arm.com
9913481Sgiacomo.travaglini@arm.comtemplate <typename T>
10013481Sgiacomo.travaglini@arm.comstruct AssertTypeEq<T, T> {
10113481Sgiacomo.travaglini@arm.com  typedef bool type;
10213481Sgiacomo.travaglini@arm.com};
10313481Sgiacomo.travaglini@arm.com
10413481Sgiacomo.travaglini@arm.com// A unique type used as the default value for the arguments of class
10513481Sgiacomo.travaglini@arm.com// template Types.  This allows us to simulate variadic templates
10613481Sgiacomo.travaglini@arm.com// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
10713481Sgiacomo.travaglini@arm.com// support directly.
10813481Sgiacomo.travaglini@arm.comstruct None {};
10913481Sgiacomo.travaglini@arm.com
11013481Sgiacomo.travaglini@arm.com// The following family of struct and struct templates are used to
11113481Sgiacomo.travaglini@arm.com// represent type lists.  In particular, TypesN<T1, T2, ..., TN>
11213481Sgiacomo.travaglini@arm.com// represents a type list with N types (T1, T2, ..., and TN) in it.
11313481Sgiacomo.travaglini@arm.com// Except for Types0, every struct in the family has two member types:
11413481Sgiacomo.travaglini@arm.com// Head for the first type in the list, and Tail for the rest of the
11513481Sgiacomo.travaglini@arm.com// list.
11613481Sgiacomo.travaglini@arm.com
11713481Sgiacomo.travaglini@arm.com// The empty type list.
11813481Sgiacomo.travaglini@arm.comstruct Types0 {};
11913481Sgiacomo.travaglini@arm.com
12013481Sgiacomo.travaglini@arm.com// Type lists of length 1, 2, 3, and so on.
12113481Sgiacomo.travaglini@arm.com
12213481Sgiacomo.travaglini@arm.comtemplate <typename T1>
12313481Sgiacomo.travaglini@arm.comstruct Types1 {
12413481Sgiacomo.travaglini@arm.com  typedef T1 Head;
12513481Sgiacomo.travaglini@arm.com  typedef Types0 Tail;
12613481Sgiacomo.travaglini@arm.com};
12713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2>
12813481Sgiacomo.travaglini@arm.comstruct Types2 {
12913481Sgiacomo.travaglini@arm.com  typedef T1 Head;
13013481Sgiacomo.travaglini@arm.com  typedef Types1<T2> Tail;
13113481Sgiacomo.travaglini@arm.com};
13213481Sgiacomo.travaglini@arm.com
13313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3>
13413481Sgiacomo.travaglini@arm.comstruct Types3 {
13513481Sgiacomo.travaglini@arm.com  typedef T1 Head;
13613481Sgiacomo.travaglini@arm.com  typedef Types2<T2, T3> Tail;
13713481Sgiacomo.travaglini@arm.com};
13813481Sgiacomo.travaglini@arm.com
13913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4>
14013481Sgiacomo.travaglini@arm.comstruct Types4 {
14113481Sgiacomo.travaglini@arm.com  typedef T1 Head;
14213481Sgiacomo.travaglini@arm.com  typedef Types3<T2, T3, T4> Tail;
14313481Sgiacomo.travaglini@arm.com};
14413481Sgiacomo.travaglini@arm.com
14513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5>
14613481Sgiacomo.travaglini@arm.comstruct Types5 {
14713481Sgiacomo.travaglini@arm.com  typedef T1 Head;
14813481Sgiacomo.travaglini@arm.com  typedef Types4<T2, T3, T4, T5> Tail;
14913481Sgiacomo.travaglini@arm.com};
15013481Sgiacomo.travaglini@arm.com
15113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
15213481Sgiacomo.travaglini@arm.com    typename T6>
15313481Sgiacomo.travaglini@arm.comstruct Types6 {
15413481Sgiacomo.travaglini@arm.com  typedef T1 Head;
15513481Sgiacomo.travaglini@arm.com  typedef Types5<T2, T3, T4, T5, T6> Tail;
15613481Sgiacomo.travaglini@arm.com};
15713481Sgiacomo.travaglini@arm.com
15813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
15913481Sgiacomo.travaglini@arm.com    typename T6, typename T7>
16013481Sgiacomo.travaglini@arm.comstruct Types7 {
16113481Sgiacomo.travaglini@arm.com  typedef T1 Head;
16213481Sgiacomo.travaglini@arm.com  typedef Types6<T2, T3, T4, T5, T6, T7> Tail;
16313481Sgiacomo.travaglini@arm.com};
16413481Sgiacomo.travaglini@arm.com
16513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
16613481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8>
16713481Sgiacomo.travaglini@arm.comstruct Types8 {
16813481Sgiacomo.travaglini@arm.com  typedef T1 Head;
16913481Sgiacomo.travaglini@arm.com  typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail;
17013481Sgiacomo.travaglini@arm.com};
17113481Sgiacomo.travaglini@arm.com
17213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
17313481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9>
17413481Sgiacomo.travaglini@arm.comstruct Types9 {
17513481Sgiacomo.travaglini@arm.com  typedef T1 Head;
17613481Sgiacomo.travaglini@arm.com  typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
17713481Sgiacomo.travaglini@arm.com};
17813481Sgiacomo.travaglini@arm.com
17913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
18013481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10>
18113481Sgiacomo.travaglini@arm.comstruct Types10 {
18213481Sgiacomo.travaglini@arm.com  typedef T1 Head;
18313481Sgiacomo.travaglini@arm.com  typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
18413481Sgiacomo.travaglini@arm.com};
18513481Sgiacomo.travaglini@arm.com
18613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
18713481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
18813481Sgiacomo.travaglini@arm.com    typename T11>
18913481Sgiacomo.travaglini@arm.comstruct Types11 {
19013481Sgiacomo.travaglini@arm.com  typedef T1 Head;
19113481Sgiacomo.travaglini@arm.com  typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
19213481Sgiacomo.travaglini@arm.com};
19313481Sgiacomo.travaglini@arm.com
19413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
19513481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
19613481Sgiacomo.travaglini@arm.com    typename T11, typename T12>
19713481Sgiacomo.travaglini@arm.comstruct Types12 {
19813481Sgiacomo.travaglini@arm.com  typedef T1 Head;
19913481Sgiacomo.travaglini@arm.com  typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
20013481Sgiacomo.travaglini@arm.com};
20113481Sgiacomo.travaglini@arm.com
20213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
20313481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
20413481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13>
20513481Sgiacomo.travaglini@arm.comstruct Types13 {
20613481Sgiacomo.travaglini@arm.com  typedef T1 Head;
20713481Sgiacomo.travaglini@arm.com  typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
20813481Sgiacomo.travaglini@arm.com};
20913481Sgiacomo.travaglini@arm.com
21013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
21113481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
21213481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14>
21313481Sgiacomo.travaglini@arm.comstruct Types14 {
21413481Sgiacomo.travaglini@arm.com  typedef T1 Head;
21513481Sgiacomo.travaglini@arm.com  typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail;
21613481Sgiacomo.travaglini@arm.com};
21713481Sgiacomo.travaglini@arm.com
21813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
21913481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
22013481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15>
22113481Sgiacomo.travaglini@arm.comstruct Types15 {
22213481Sgiacomo.travaglini@arm.com  typedef T1 Head;
22313481Sgiacomo.travaglini@arm.com  typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
22413481Sgiacomo.travaglini@arm.com      T15> Tail;
22513481Sgiacomo.travaglini@arm.com};
22613481Sgiacomo.travaglini@arm.com
22713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
22813481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
22913481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
23013481Sgiacomo.travaglini@arm.com    typename T16>
23113481Sgiacomo.travaglini@arm.comstruct Types16 {
23213481Sgiacomo.travaglini@arm.com  typedef T1 Head;
23313481Sgiacomo.travaglini@arm.com  typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
23413481Sgiacomo.travaglini@arm.com      T16> Tail;
23513481Sgiacomo.travaglini@arm.com};
23613481Sgiacomo.travaglini@arm.com
23713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
23813481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
23913481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
24013481Sgiacomo.travaglini@arm.com    typename T16, typename T17>
24113481Sgiacomo.travaglini@arm.comstruct Types17 {
24213481Sgiacomo.travaglini@arm.com  typedef T1 Head;
24313481Sgiacomo.travaglini@arm.com  typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
24413481Sgiacomo.travaglini@arm.com      T16, T17> Tail;
24513481Sgiacomo.travaglini@arm.com};
24613481Sgiacomo.travaglini@arm.com
24713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
24813481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
24913481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
25013481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18>
25113481Sgiacomo.travaglini@arm.comstruct Types18 {
25213481Sgiacomo.travaglini@arm.com  typedef T1 Head;
25313481Sgiacomo.travaglini@arm.com  typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
25413481Sgiacomo.travaglini@arm.com      T16, T17, T18> Tail;
25513481Sgiacomo.travaglini@arm.com};
25613481Sgiacomo.travaglini@arm.com
25713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
25813481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
25913481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
26013481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19>
26113481Sgiacomo.travaglini@arm.comstruct Types19 {
26213481Sgiacomo.travaglini@arm.com  typedef T1 Head;
26313481Sgiacomo.travaglini@arm.com  typedef Types18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
26413481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19> Tail;
26513481Sgiacomo.travaglini@arm.com};
26613481Sgiacomo.travaglini@arm.com
26713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
26813481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
26913481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
27013481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20>
27113481Sgiacomo.travaglini@arm.comstruct Types20 {
27213481Sgiacomo.travaglini@arm.com  typedef T1 Head;
27313481Sgiacomo.travaglini@arm.com  typedef Types19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
27413481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20> Tail;
27513481Sgiacomo.travaglini@arm.com};
27613481Sgiacomo.travaglini@arm.com
27713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
27813481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
27913481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
28013481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
28113481Sgiacomo.travaglini@arm.com    typename T21>
28213481Sgiacomo.travaglini@arm.comstruct Types21 {
28313481Sgiacomo.travaglini@arm.com  typedef T1 Head;
28413481Sgiacomo.travaglini@arm.com  typedef Types20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
28513481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21> Tail;
28613481Sgiacomo.travaglini@arm.com};
28713481Sgiacomo.travaglini@arm.com
28813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
28913481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
29013481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
29113481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
29213481Sgiacomo.travaglini@arm.com    typename T21, typename T22>
29313481Sgiacomo.travaglini@arm.comstruct Types22 {
29413481Sgiacomo.travaglini@arm.com  typedef T1 Head;
29513481Sgiacomo.travaglini@arm.com  typedef Types21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
29613481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22> Tail;
29713481Sgiacomo.travaglini@arm.com};
29813481Sgiacomo.travaglini@arm.com
29913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
30013481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
30113481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
30213481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
30313481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23>
30413481Sgiacomo.travaglini@arm.comstruct Types23 {
30513481Sgiacomo.travaglini@arm.com  typedef T1 Head;
30613481Sgiacomo.travaglini@arm.com  typedef Types22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
30713481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23> Tail;
30813481Sgiacomo.travaglini@arm.com};
30913481Sgiacomo.travaglini@arm.com
31013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
31113481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
31213481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
31313481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
31413481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24>
31513481Sgiacomo.travaglini@arm.comstruct Types24 {
31613481Sgiacomo.travaglini@arm.com  typedef T1 Head;
31713481Sgiacomo.travaglini@arm.com  typedef Types23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
31813481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
31913481Sgiacomo.travaglini@arm.com};
32013481Sgiacomo.travaglini@arm.com
32113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
32213481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
32313481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
32413481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
32513481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25>
32613481Sgiacomo.travaglini@arm.comstruct Types25 {
32713481Sgiacomo.travaglini@arm.com  typedef T1 Head;
32813481Sgiacomo.travaglini@arm.com  typedef Types24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
32913481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
33013481Sgiacomo.travaglini@arm.com};
33113481Sgiacomo.travaglini@arm.com
33213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
33313481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
33413481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
33513481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
33613481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
33713481Sgiacomo.travaglini@arm.com    typename T26>
33813481Sgiacomo.travaglini@arm.comstruct Types26 {
33913481Sgiacomo.travaglini@arm.com  typedef T1 Head;
34013481Sgiacomo.travaglini@arm.com  typedef Types25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
34113481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
34213481Sgiacomo.travaglini@arm.com};
34313481Sgiacomo.travaglini@arm.com
34413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
34513481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
34613481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
34713481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
34813481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
34913481Sgiacomo.travaglini@arm.com    typename T26, typename T27>
35013481Sgiacomo.travaglini@arm.comstruct Types27 {
35113481Sgiacomo.travaglini@arm.com  typedef T1 Head;
35213481Sgiacomo.travaglini@arm.com  typedef Types26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
35313481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
35413481Sgiacomo.travaglini@arm.com};
35513481Sgiacomo.travaglini@arm.com
35613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
35713481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
35813481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
35913481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
36013481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
36113481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28>
36213481Sgiacomo.travaglini@arm.comstruct Types28 {
36313481Sgiacomo.travaglini@arm.com  typedef T1 Head;
36413481Sgiacomo.travaglini@arm.com  typedef Types27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
36513481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail;
36613481Sgiacomo.travaglini@arm.com};
36713481Sgiacomo.travaglini@arm.com
36813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
36913481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
37013481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
37113481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
37213481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
37313481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29>
37413481Sgiacomo.travaglini@arm.comstruct Types29 {
37513481Sgiacomo.travaglini@arm.com  typedef T1 Head;
37613481Sgiacomo.travaglini@arm.com  typedef Types28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
37713481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
37813481Sgiacomo.travaglini@arm.com      T29> Tail;
37913481Sgiacomo.travaglini@arm.com};
38013481Sgiacomo.travaglini@arm.com
38113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
38213481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
38313481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
38413481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
38513481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
38613481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30>
38713481Sgiacomo.travaglini@arm.comstruct Types30 {
38813481Sgiacomo.travaglini@arm.com  typedef T1 Head;
38913481Sgiacomo.travaglini@arm.com  typedef Types29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
39013481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
39113481Sgiacomo.travaglini@arm.com      T30> Tail;
39213481Sgiacomo.travaglini@arm.com};
39313481Sgiacomo.travaglini@arm.com
39413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
39513481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
39613481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
39713481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
39813481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
39913481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
40013481Sgiacomo.travaglini@arm.com    typename T31>
40113481Sgiacomo.travaglini@arm.comstruct Types31 {
40213481Sgiacomo.travaglini@arm.com  typedef T1 Head;
40313481Sgiacomo.travaglini@arm.com  typedef Types30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
40413481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
40513481Sgiacomo.travaglini@arm.com      T30, T31> Tail;
40613481Sgiacomo.travaglini@arm.com};
40713481Sgiacomo.travaglini@arm.com
40813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
40913481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
41013481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
41113481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
41213481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
41313481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
41413481Sgiacomo.travaglini@arm.com    typename T31, typename T32>
41513481Sgiacomo.travaglini@arm.comstruct Types32 {
41613481Sgiacomo.travaglini@arm.com  typedef T1 Head;
41713481Sgiacomo.travaglini@arm.com  typedef Types31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
41813481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
41913481Sgiacomo.travaglini@arm.com      T30, T31, T32> Tail;
42013481Sgiacomo.travaglini@arm.com};
42113481Sgiacomo.travaglini@arm.com
42213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
42313481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
42413481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
42513481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
42613481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
42713481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
42813481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33>
42913481Sgiacomo.travaglini@arm.comstruct Types33 {
43013481Sgiacomo.travaglini@arm.com  typedef T1 Head;
43113481Sgiacomo.travaglini@arm.com  typedef Types32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
43213481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
43313481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33> Tail;
43413481Sgiacomo.travaglini@arm.com};
43513481Sgiacomo.travaglini@arm.com
43613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
43713481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
43813481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
43913481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
44013481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
44113481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
44213481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34>
44313481Sgiacomo.travaglini@arm.comstruct Types34 {
44413481Sgiacomo.travaglini@arm.com  typedef T1 Head;
44513481Sgiacomo.travaglini@arm.com  typedef Types33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
44613481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
44713481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34> Tail;
44813481Sgiacomo.travaglini@arm.com};
44913481Sgiacomo.travaglini@arm.com
45013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
45113481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
45213481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
45313481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
45413481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
45513481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
45613481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35>
45713481Sgiacomo.travaglini@arm.comstruct Types35 {
45813481Sgiacomo.travaglini@arm.com  typedef T1 Head;
45913481Sgiacomo.travaglini@arm.com  typedef Types34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
46013481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
46113481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35> Tail;
46213481Sgiacomo.travaglini@arm.com};
46313481Sgiacomo.travaglini@arm.com
46413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
46513481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
46613481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
46713481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
46813481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
46913481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
47013481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
47113481Sgiacomo.travaglini@arm.com    typename T36>
47213481Sgiacomo.travaglini@arm.comstruct Types36 {
47313481Sgiacomo.travaglini@arm.com  typedef T1 Head;
47413481Sgiacomo.travaglini@arm.com  typedef Types35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
47513481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
47613481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36> Tail;
47713481Sgiacomo.travaglini@arm.com};
47813481Sgiacomo.travaglini@arm.com
47913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
48013481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
48113481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
48213481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
48313481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
48413481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
48513481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
48613481Sgiacomo.travaglini@arm.com    typename T36, typename T37>
48713481Sgiacomo.travaglini@arm.comstruct Types37 {
48813481Sgiacomo.travaglini@arm.com  typedef T1 Head;
48913481Sgiacomo.travaglini@arm.com  typedef Types36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
49013481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
49113481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37> Tail;
49213481Sgiacomo.travaglini@arm.com};
49313481Sgiacomo.travaglini@arm.com
49413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
49513481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
49613481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
49713481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
49813481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
49913481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
50013481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
50113481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38>
50213481Sgiacomo.travaglini@arm.comstruct Types38 {
50313481Sgiacomo.travaglini@arm.com  typedef T1 Head;
50413481Sgiacomo.travaglini@arm.com  typedef Types37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
50513481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
50613481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
50713481Sgiacomo.travaglini@arm.com};
50813481Sgiacomo.travaglini@arm.com
50913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
51013481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
51113481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
51213481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
51313481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
51413481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
51513481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
51613481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39>
51713481Sgiacomo.travaglini@arm.comstruct Types39 {
51813481Sgiacomo.travaglini@arm.com  typedef T1 Head;
51913481Sgiacomo.travaglini@arm.com  typedef Types38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
52013481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
52113481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
52213481Sgiacomo.travaglini@arm.com};
52313481Sgiacomo.travaglini@arm.com
52413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
52513481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
52613481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
52713481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
52813481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
52913481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
53013481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
53113481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40>
53213481Sgiacomo.travaglini@arm.comstruct Types40 {
53313481Sgiacomo.travaglini@arm.com  typedef T1 Head;
53413481Sgiacomo.travaglini@arm.com  typedef Types39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
53513481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
53613481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
53713481Sgiacomo.travaglini@arm.com};
53813481Sgiacomo.travaglini@arm.com
53913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
54013481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
54113481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
54213481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
54313481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
54413481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
54513481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
54613481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
54713481Sgiacomo.travaglini@arm.com    typename T41>
54813481Sgiacomo.travaglini@arm.comstruct Types41 {
54913481Sgiacomo.travaglini@arm.com  typedef T1 Head;
55013481Sgiacomo.travaglini@arm.com  typedef Types40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
55113481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
55213481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
55313481Sgiacomo.travaglini@arm.com};
55413481Sgiacomo.travaglini@arm.com
55513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
55613481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
55713481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
55813481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
55913481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
56013481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
56113481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
56213481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
56313481Sgiacomo.travaglini@arm.com    typename T41, typename T42>
56413481Sgiacomo.travaglini@arm.comstruct Types42 {
56513481Sgiacomo.travaglini@arm.com  typedef T1 Head;
56613481Sgiacomo.travaglini@arm.com  typedef Types41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
56713481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
56813481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail;
56913481Sgiacomo.travaglini@arm.com};
57013481Sgiacomo.travaglini@arm.com
57113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
57213481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
57313481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
57413481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
57513481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
57613481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
57713481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
57813481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
57913481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43>
58013481Sgiacomo.travaglini@arm.comstruct Types43 {
58113481Sgiacomo.travaglini@arm.com  typedef T1 Head;
58213481Sgiacomo.travaglini@arm.com  typedef Types42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
58313481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
58413481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
58513481Sgiacomo.travaglini@arm.com      T43> Tail;
58613481Sgiacomo.travaglini@arm.com};
58713481Sgiacomo.travaglini@arm.com
58813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
58913481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
59013481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
59113481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
59213481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
59313481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
59413481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
59513481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
59613481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44>
59713481Sgiacomo.travaglini@arm.comstruct Types44 {
59813481Sgiacomo.travaglini@arm.com  typedef T1 Head;
59913481Sgiacomo.travaglini@arm.com  typedef Types43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
60013481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
60113481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
60213481Sgiacomo.travaglini@arm.com      T44> Tail;
60313481Sgiacomo.travaglini@arm.com};
60413481Sgiacomo.travaglini@arm.com
60513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
60613481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
60713481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
60813481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
60913481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
61013481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
61113481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
61213481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
61313481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44, typename T45>
61413481Sgiacomo.travaglini@arm.comstruct Types45 {
61513481Sgiacomo.travaglini@arm.com  typedef T1 Head;
61613481Sgiacomo.travaglini@arm.com  typedef Types44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
61713481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
61813481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
61913481Sgiacomo.travaglini@arm.com      T44, T45> Tail;
62013481Sgiacomo.travaglini@arm.com};
62113481Sgiacomo.travaglini@arm.com
62213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
62313481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
62413481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
62513481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
62613481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
62713481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
62813481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
62913481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
63013481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44, typename T45,
63113481Sgiacomo.travaglini@arm.com    typename T46>
63213481Sgiacomo.travaglini@arm.comstruct Types46 {
63313481Sgiacomo.travaglini@arm.com  typedef T1 Head;
63413481Sgiacomo.travaglini@arm.com  typedef Types45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
63513481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
63613481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
63713481Sgiacomo.travaglini@arm.com      T44, T45, T46> Tail;
63813481Sgiacomo.travaglini@arm.com};
63913481Sgiacomo.travaglini@arm.com
64013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
64113481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
64213481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
64313481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
64413481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
64513481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
64613481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
64713481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
64813481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44, typename T45,
64913481Sgiacomo.travaglini@arm.com    typename T46, typename T47>
65013481Sgiacomo.travaglini@arm.comstruct Types47 {
65113481Sgiacomo.travaglini@arm.com  typedef T1 Head;
65213481Sgiacomo.travaglini@arm.com  typedef Types46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
65313481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
65413481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
65513481Sgiacomo.travaglini@arm.com      T44, T45, T46, T47> Tail;
65613481Sgiacomo.travaglini@arm.com};
65713481Sgiacomo.travaglini@arm.com
65813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
65913481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
66013481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
66113481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
66213481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
66313481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
66413481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
66513481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
66613481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44, typename T45,
66713481Sgiacomo.travaglini@arm.com    typename T46, typename T47, typename T48>
66813481Sgiacomo.travaglini@arm.comstruct Types48 {
66913481Sgiacomo.travaglini@arm.com  typedef T1 Head;
67013481Sgiacomo.travaglini@arm.com  typedef Types47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
67113481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
67213481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
67313481Sgiacomo.travaglini@arm.com      T44, T45, T46, T47, T48> Tail;
67413481Sgiacomo.travaglini@arm.com};
67513481Sgiacomo.travaglini@arm.com
67613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
67713481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
67813481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
67913481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
68013481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
68113481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
68213481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
68313481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
68413481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44, typename T45,
68513481Sgiacomo.travaglini@arm.com    typename T46, typename T47, typename T48, typename T49>
68613481Sgiacomo.travaglini@arm.comstruct Types49 {
68713481Sgiacomo.travaglini@arm.com  typedef T1 Head;
68813481Sgiacomo.travaglini@arm.com  typedef Types48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
68913481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
69013481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
69113481Sgiacomo.travaglini@arm.com      T44, T45, T46, T47, T48, T49> Tail;
69213481Sgiacomo.travaglini@arm.com};
69313481Sgiacomo.travaglini@arm.com
69413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
69513481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
69613481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
69713481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
69813481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
69913481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
70013481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
70113481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
70213481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44, typename T45,
70313481Sgiacomo.travaglini@arm.com    typename T46, typename T47, typename T48, typename T49, typename T50>
70413481Sgiacomo.travaglini@arm.comstruct Types50 {
70513481Sgiacomo.travaglini@arm.com  typedef T1 Head;
70613481Sgiacomo.travaglini@arm.com  typedef Types49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
70713481Sgiacomo.travaglini@arm.com      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
70813481Sgiacomo.travaglini@arm.com      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
70913481Sgiacomo.travaglini@arm.com      T44, T45, T46, T47, T48, T49, T50> Tail;
71013481Sgiacomo.travaglini@arm.com};
71113481Sgiacomo.travaglini@arm.com
71213481Sgiacomo.travaglini@arm.com
71313481Sgiacomo.travaglini@arm.com}  // namespace internal
71413481Sgiacomo.travaglini@arm.com
71513481Sgiacomo.travaglini@arm.com// We don't want to require the users to write TypesN<...> directly,
71613481Sgiacomo.travaglini@arm.com// as that would require them to count the length.  Types<...> is much
71713481Sgiacomo.travaglini@arm.com// easier to write, but generates horrible messages when there is a
71813481Sgiacomo.travaglini@arm.com// compiler error, as gcc insists on printing out each template
71913481Sgiacomo.travaglini@arm.com// argument, even if it has the default value (this means Types<int>
72013481Sgiacomo.travaglini@arm.com// will appear as Types<int, None, None, ..., None> in the compiler
72113481Sgiacomo.travaglini@arm.com// errors).
72213481Sgiacomo.travaglini@arm.com//
72313481Sgiacomo.travaglini@arm.com// Our solution is to combine the best part of the two approaches: a
72413481Sgiacomo.travaglini@arm.com// user would write Types<T1, ..., TN>, and Google Test will translate
72513481Sgiacomo.travaglini@arm.com// that to TypesN<T1, ..., TN> internally to make error messages
72613481Sgiacomo.travaglini@arm.com// readable.  The translation is done by the 'type' member of the
72713481Sgiacomo.travaglini@arm.com// Types template.
72813481Sgiacomo.travaglini@arm.comtemplate <typename T1 = internal::None, typename T2 = internal::None,
72913481Sgiacomo.travaglini@arm.com    typename T3 = internal::None, typename T4 = internal::None,
73013481Sgiacomo.travaglini@arm.com    typename T5 = internal::None, typename T6 = internal::None,
73113481Sgiacomo.travaglini@arm.com    typename T7 = internal::None, typename T8 = internal::None,
73213481Sgiacomo.travaglini@arm.com    typename T9 = internal::None, typename T10 = internal::None,
73313481Sgiacomo.travaglini@arm.com    typename T11 = internal::None, typename T12 = internal::None,
73413481Sgiacomo.travaglini@arm.com    typename T13 = internal::None, typename T14 = internal::None,
73513481Sgiacomo.travaglini@arm.com    typename T15 = internal::None, typename T16 = internal::None,
73613481Sgiacomo.travaglini@arm.com    typename T17 = internal::None, typename T18 = internal::None,
73713481Sgiacomo.travaglini@arm.com    typename T19 = internal::None, typename T20 = internal::None,
73813481Sgiacomo.travaglini@arm.com    typename T21 = internal::None, typename T22 = internal::None,
73913481Sgiacomo.travaglini@arm.com    typename T23 = internal::None, typename T24 = internal::None,
74013481Sgiacomo.travaglini@arm.com    typename T25 = internal::None, typename T26 = internal::None,
74113481Sgiacomo.travaglini@arm.com    typename T27 = internal::None, typename T28 = internal::None,
74213481Sgiacomo.travaglini@arm.com    typename T29 = internal::None, typename T30 = internal::None,
74313481Sgiacomo.travaglini@arm.com    typename T31 = internal::None, typename T32 = internal::None,
74413481Sgiacomo.travaglini@arm.com    typename T33 = internal::None, typename T34 = internal::None,
74513481Sgiacomo.travaglini@arm.com    typename T35 = internal::None, typename T36 = internal::None,
74613481Sgiacomo.travaglini@arm.com    typename T37 = internal::None, typename T38 = internal::None,
74713481Sgiacomo.travaglini@arm.com    typename T39 = internal::None, typename T40 = internal::None,
74813481Sgiacomo.travaglini@arm.com    typename T41 = internal::None, typename T42 = internal::None,
74913481Sgiacomo.travaglini@arm.com    typename T43 = internal::None, typename T44 = internal::None,
75013481Sgiacomo.travaglini@arm.com    typename T45 = internal::None, typename T46 = internal::None,
75113481Sgiacomo.travaglini@arm.com    typename T47 = internal::None, typename T48 = internal::None,
75213481Sgiacomo.travaglini@arm.com    typename T49 = internal::None, typename T50 = internal::None>
75313481Sgiacomo.travaglini@arm.comstruct Types {
75413481Sgiacomo.travaglini@arm.com  typedef internal::Types50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
75513481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
75613481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
75713481Sgiacomo.travaglini@arm.com      T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
75813481Sgiacomo.travaglini@arm.com};
75913481Sgiacomo.travaglini@arm.com
76013481Sgiacomo.travaglini@arm.comtemplate <>
76113481Sgiacomo.travaglini@arm.comstruct Types<internal::None, internal::None, internal::None, internal::None,
76213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
76313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
76413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
76513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
76613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
76713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
76813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
76913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
77013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
77113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
77213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
77313481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
77413481Sgiacomo.travaglini@arm.com  typedef internal::Types0 type;
77513481Sgiacomo.travaglini@arm.com};
77613481Sgiacomo.travaglini@arm.comtemplate <typename T1>
77713481Sgiacomo.travaglini@arm.comstruct Types<T1, internal::None, internal::None, internal::None,
77813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
77913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
78013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
78113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
78213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
78313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
78413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
78513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
78613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
78713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
78813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
78913481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
79013481Sgiacomo.travaglini@arm.com  typedef internal::Types1<T1> type;
79113481Sgiacomo.travaglini@arm.com};
79213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2>
79313481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, internal::None, internal::None, internal::None,
79413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
79513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
79613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
79713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
79813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
79913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
80013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
80113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
80213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
80313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
80413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
80513481Sgiacomo.travaglini@arm.com    internal::None> {
80613481Sgiacomo.travaglini@arm.com  typedef internal::Types2<T1, T2> type;
80713481Sgiacomo.travaglini@arm.com};
80813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3>
80913481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, internal::None, internal::None, internal::None,
81013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
81113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
81213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
81313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
81413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
81513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
81613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
81713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
81813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
81913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
82013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None> {
82113481Sgiacomo.travaglini@arm.com  typedef internal::Types3<T1, T2, T3> type;
82213481Sgiacomo.travaglini@arm.com};
82313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4>
82413481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, internal::None, internal::None, internal::None,
82513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
82613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
82713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
82813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
82913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
83013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
83113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
83213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
83313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
83413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
83513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None> {
83613481Sgiacomo.travaglini@arm.com  typedef internal::Types4<T1, T2, T3, T4> type;
83713481Sgiacomo.travaglini@arm.com};
83813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5>
83913481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, internal::None, internal::None,
84013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
84113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
84213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
84313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
84413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
84513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
84613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
84713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
84813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
84913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
85013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None> {
85113481Sgiacomo.travaglini@arm.com  typedef internal::Types5<T1, T2, T3, T4, T5> type;
85213481Sgiacomo.travaglini@arm.com};
85313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
85413481Sgiacomo.travaglini@arm.com    typename T6>
85513481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, internal::None, internal::None,
85613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
85713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
85813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
85913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
86013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
86113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
86213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
86313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
86413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
86513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
86613481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
86713481Sgiacomo.travaglini@arm.com  typedef internal::Types6<T1, T2, T3, T4, T5, T6> type;
86813481Sgiacomo.travaglini@arm.com};
86913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
87013481Sgiacomo.travaglini@arm.com    typename T6, typename T7>
87113481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, internal::None, internal::None,
87213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
87313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
87413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
87513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
87613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
87713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
87813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
87913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
88013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
88113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
88213481Sgiacomo.travaglini@arm.com    internal::None> {
88313481Sgiacomo.travaglini@arm.com  typedef internal::Types7<T1, T2, T3, T4, T5, T6, T7> type;
88413481Sgiacomo.travaglini@arm.com};
88513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
88613481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8>
88713481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, internal::None, internal::None,
88813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
88913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
89013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
89113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
89213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
89313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
89413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
89513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
89613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
89713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None> {
89813481Sgiacomo.travaglini@arm.com  typedef internal::Types8<T1, T2, T3, T4, T5, T6, T7, T8> type;
89913481Sgiacomo.travaglini@arm.com};
90013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
90113481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9>
90213481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, internal::None,
90313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
90413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
90513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
90613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
90713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
90813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
90913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
91013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
91113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
91213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None> {
91313481Sgiacomo.travaglini@arm.com  typedef internal::Types9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
91413481Sgiacomo.travaglini@arm.com};
91513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
91613481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10>
91713481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, internal::None,
91813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
91913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
92013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
92113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
92213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
92313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
92413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
92513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
92613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
92713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None> {
92813481Sgiacomo.travaglini@arm.com  typedef internal::Types10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
92913481Sgiacomo.travaglini@arm.com};
93013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
93113481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
93213481Sgiacomo.travaglini@arm.com    typename T11>
93313481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, internal::None,
93413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
93513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
93613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
93713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
93813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
93913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
94013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
94113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
94213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
94313481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
94413481Sgiacomo.travaglini@arm.com  typedef internal::Types11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
94513481Sgiacomo.travaglini@arm.com};
94613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
94713481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
94813481Sgiacomo.travaglini@arm.com    typename T11, typename T12>
94913481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, internal::None,
95013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
95113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
95213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
95313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
95413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
95513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
95613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
95713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
95813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
95913481Sgiacomo.travaglini@arm.com    internal::None> {
96013481Sgiacomo.travaglini@arm.com  typedef internal::Types12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
96113481Sgiacomo.travaglini@arm.com      T12> type;
96213481Sgiacomo.travaglini@arm.com};
96313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
96413481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
96513481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13>
96613481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
96713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
96813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
96913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
97013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
97113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
97213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
97313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
97413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
97513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
97613481Sgiacomo.travaglini@arm.com    internal::None> {
97713481Sgiacomo.travaglini@arm.com  typedef internal::Types13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
97813481Sgiacomo.travaglini@arm.com      T13> type;
97913481Sgiacomo.travaglini@arm.com};
98013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
98113481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
98213481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14>
98313481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
98413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
98513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
98613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
98713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
98813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
98913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
99013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
99113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
99213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None> {
99313481Sgiacomo.travaglini@arm.com  typedef internal::Types14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
99413481Sgiacomo.travaglini@arm.com      T13, T14> type;
99513481Sgiacomo.travaglini@arm.com};
99613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
99713481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
99813481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15>
99913481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
100013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
100113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
100213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
100313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
100413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
100513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
100613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
100713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
100813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None> {
100913481Sgiacomo.travaglini@arm.com  typedef internal::Types15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
101013481Sgiacomo.travaglini@arm.com      T13, T14, T15> type;
101113481Sgiacomo.travaglini@arm.com};
101213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
101313481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
101413481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
101513481Sgiacomo.travaglini@arm.com    typename T16>
101613481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
101713481Sgiacomo.travaglini@arm.com    T16, internal::None, internal::None, internal::None, internal::None,
101813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
101913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
102013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
102113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
102213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
102313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
102413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
102513481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
102613481Sgiacomo.travaglini@arm.com  typedef internal::Types16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
102713481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16> type;
102813481Sgiacomo.travaglini@arm.com};
102913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
103013481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
103113481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
103213481Sgiacomo.travaglini@arm.com    typename T16, typename T17>
103313481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
103413481Sgiacomo.travaglini@arm.com    T16, T17, internal::None, internal::None, internal::None, internal::None,
103513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
103613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
103713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
103813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
103913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
104013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
104113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
104213481Sgiacomo.travaglini@arm.com    internal::None> {
104313481Sgiacomo.travaglini@arm.com  typedef internal::Types17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
104413481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17> type;
104513481Sgiacomo.travaglini@arm.com};
104613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
104713481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
104813481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
104913481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18>
105013481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
105113481Sgiacomo.travaglini@arm.com    T16, T17, T18, internal::None, internal::None, internal::None,
105213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
105313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
105413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
105513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
105613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
105713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
105813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
105913481Sgiacomo.travaglini@arm.com    internal::None> {
106013481Sgiacomo.travaglini@arm.com  typedef internal::Types18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
106113481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18> type;
106213481Sgiacomo.travaglini@arm.com};
106313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
106413481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
106513481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
106613481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19>
106713481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
106813481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, internal::None, internal::None, internal::None,
106913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
107013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
107113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
107213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
107313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
107413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
107513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None> {
107613481Sgiacomo.travaglini@arm.com  typedef internal::Types19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
107713481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19> type;
107813481Sgiacomo.travaglini@arm.com};
107913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
108013481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
108113481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
108213481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20>
108313481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
108413481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, internal::None, internal::None, internal::None,
108513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
108613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
108713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
108813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
108913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
109013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
109113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None> {
109213481Sgiacomo.travaglini@arm.com  typedef internal::Types20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
109313481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20> type;
109413481Sgiacomo.travaglini@arm.com};
109513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
109613481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
109713481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
109813481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
109913481Sgiacomo.travaglini@arm.com    typename T21>
110013481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
110113481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, internal::None, internal::None,
110213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
110313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
110413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
110513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
110613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
110713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
110813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None> {
110913481Sgiacomo.travaglini@arm.com  typedef internal::Types21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
111013481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21> type;
111113481Sgiacomo.travaglini@arm.com};
111213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
111313481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
111413481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
111513481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
111613481Sgiacomo.travaglini@arm.com    typename T21, typename T22>
111713481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
111813481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, internal::None, internal::None,
111913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
112013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
112113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
112213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
112313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
112413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
112513481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
112613481Sgiacomo.travaglini@arm.com  typedef internal::Types22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
112713481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
112813481Sgiacomo.travaglini@arm.com};
112913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
113013481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
113113481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
113213481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
113313481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23>
113413481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
113513481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, internal::None, internal::None,
113613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
113713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
113813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
113913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
114013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
114113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
114213481Sgiacomo.travaglini@arm.com    internal::None> {
114313481Sgiacomo.travaglini@arm.com  typedef internal::Types23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
114413481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
114513481Sgiacomo.travaglini@arm.com};
114613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
114713481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
114813481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
114913481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
115013481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24>
115113481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
115213481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, internal::None,
115313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
115413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
115513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
115613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
115713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
115813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
115913481Sgiacomo.travaglini@arm.com    internal::None> {
116013481Sgiacomo.travaglini@arm.com  typedef internal::Types24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
116113481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
116213481Sgiacomo.travaglini@arm.com};
116313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
116413481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
116513481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
116613481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
116713481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25>
116813481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
116913481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, internal::None,
117013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
117113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
117213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
117313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
117413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
117513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None> {
117613481Sgiacomo.travaglini@arm.com  typedef internal::Types25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
117713481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
117813481Sgiacomo.travaglini@arm.com};
117913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
118013481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
118113481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
118213481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
118313481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
118413481Sgiacomo.travaglini@arm.com    typename T26>
118513481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
118613481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, internal::None,
118713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
118813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
118913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
119013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
119113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
119213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None> {
119313481Sgiacomo.travaglini@arm.com  typedef internal::Types26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
119413481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
119513481Sgiacomo.travaglini@arm.com      T26> type;
119613481Sgiacomo.travaglini@arm.com};
119713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
119813481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
119913481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
120013481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
120113481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
120213481Sgiacomo.travaglini@arm.com    typename T26, typename T27>
120313481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
120413481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, internal::None,
120513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
120613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
120713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
120813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
120913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
121013481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
121113481Sgiacomo.travaglini@arm.com  typedef internal::Types27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
121213481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
121313481Sgiacomo.travaglini@arm.com      T27> type;
121413481Sgiacomo.travaglini@arm.com};
121513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
121613481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
121713481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
121813481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
121913481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
122013481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28>
122113481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
122213481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
122313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
122413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
122513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
122613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
122713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
122813481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
122913481Sgiacomo.travaglini@arm.com  typedef internal::Types28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
123013481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
123113481Sgiacomo.travaglini@arm.com      T27, T28> type;
123213481Sgiacomo.travaglini@arm.com};
123313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
123413481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
123513481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
123613481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
123713481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
123813481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29>
123913481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
124013481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
124113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
124213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
124313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
124413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
124513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
124613481Sgiacomo.travaglini@arm.com    internal::None> {
124713481Sgiacomo.travaglini@arm.com  typedef internal::Types29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
124813481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
124913481Sgiacomo.travaglini@arm.com      T27, T28, T29> type;
125013481Sgiacomo.travaglini@arm.com};
125113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
125213481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
125313481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
125413481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
125513481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
125613481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30>
125713481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
125813481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
125913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
126013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
126113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
126213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
126313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None> {
126413481Sgiacomo.travaglini@arm.com  typedef internal::Types30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
126513481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
126613481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30> type;
126713481Sgiacomo.travaglini@arm.com};
126813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
126913481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
127013481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
127113481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
127213481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
127313481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
127413481Sgiacomo.travaglini@arm.com    typename T31>
127513481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
127613481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
127713481Sgiacomo.travaglini@arm.com    T31, internal::None, internal::None, internal::None, internal::None,
127813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
127913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
128013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
128113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None> {
128213481Sgiacomo.travaglini@arm.com  typedef internal::Types31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
128313481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
128413481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31> type;
128513481Sgiacomo.travaglini@arm.com};
128613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
128713481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
128813481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
128913481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
129013481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
129113481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
129213481Sgiacomo.travaglini@arm.com    typename T31, typename T32>
129313481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
129413481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
129513481Sgiacomo.travaglini@arm.com    T31, T32, internal::None, internal::None, internal::None, internal::None,
129613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
129713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
129813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
129913481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
130013481Sgiacomo.travaglini@arm.com  typedef internal::Types32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
130113481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
130213481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32> type;
130313481Sgiacomo.travaglini@arm.com};
130413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
130513481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
130613481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
130713481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
130813481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
130913481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
131013481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33>
131113481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
131213481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
131313481Sgiacomo.travaglini@arm.com    T31, T32, T33, internal::None, internal::None, internal::None,
131413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
131513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
131613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
131713481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
131813481Sgiacomo.travaglini@arm.com  typedef internal::Types33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
131913481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
132013481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33> type;
132113481Sgiacomo.travaglini@arm.com};
132213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
132313481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
132413481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
132513481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
132613481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
132713481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
132813481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34>
132913481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
133013481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
133113481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, internal::None, internal::None, internal::None,
133213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
133313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
133413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
133513481Sgiacomo.travaglini@arm.com    internal::None> {
133613481Sgiacomo.travaglini@arm.com  typedef internal::Types34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
133713481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
133813481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34> type;
133913481Sgiacomo.travaglini@arm.com};
134013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
134113481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
134213481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
134313481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
134413481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
134513481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
134613481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35>
134713481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
134813481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
134913481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, internal::None, internal::None, internal::None,
135013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
135113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
135213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None> {
135313481Sgiacomo.travaglini@arm.com  typedef internal::Types35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
135413481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
135513481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35> type;
135613481Sgiacomo.travaglini@arm.com};
135713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
135813481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
135913481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
136013481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
136113481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
136213481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
136313481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
136413481Sgiacomo.travaglini@arm.com    typename T36>
136513481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
136613481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
136713481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, internal::None, internal::None,
136813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
136913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
137013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None> {
137113481Sgiacomo.travaglini@arm.com  typedef internal::Types36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
137213481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
137313481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
137413481Sgiacomo.travaglini@arm.com};
137513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
137613481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
137713481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
137813481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
137913481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
138013481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
138113481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
138213481Sgiacomo.travaglini@arm.com    typename T36, typename T37>
138313481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
138413481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
138513481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, internal::None, internal::None,
138613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
138713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
138813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None> {
138913481Sgiacomo.travaglini@arm.com  typedef internal::Types37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
139013481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
139113481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
139213481Sgiacomo.travaglini@arm.com};
139313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
139413481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
139513481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
139613481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
139713481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
139813481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
139913481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
140013481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38>
140113481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
140213481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
140313481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, T38, internal::None, internal::None,
140413481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
140513481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
140613481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
140713481Sgiacomo.travaglini@arm.com  typedef internal::Types38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
140813481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
140913481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
141013481Sgiacomo.travaglini@arm.com};
141113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
141213481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
141313481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
141413481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
141513481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
141613481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
141713481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
141813481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39>
141913481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
142013481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
142113481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, T38, T39, internal::None,
142213481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
142313481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
142413481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
142513481Sgiacomo.travaglini@arm.com  typedef internal::Types39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
142613481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
142713481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
142813481Sgiacomo.travaglini@arm.com};
142913481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
143013481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
143113481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
143213481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
143313481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
143413481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
143513481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
143613481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40>
143713481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
143813481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
143913481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, internal::None,
144013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
144113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
144213481Sgiacomo.travaglini@arm.com    internal::None> {
144313481Sgiacomo.travaglini@arm.com  typedef internal::Types40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
144413481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
144513481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
144613481Sgiacomo.travaglini@arm.com      T40> type;
144713481Sgiacomo.travaglini@arm.com};
144813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
144913481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
145013481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
145113481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
145213481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
145313481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
145413481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
145513481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
145613481Sgiacomo.travaglini@arm.com    typename T41>
145713481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
145813481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
145913481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, internal::None,
146013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
146113481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None> {
146213481Sgiacomo.travaglini@arm.com  typedef internal::Types41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
146313481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
146413481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
146513481Sgiacomo.travaglini@arm.com      T41> type;
146613481Sgiacomo.travaglini@arm.com};
146713481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
146813481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
146913481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
147013481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
147113481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
147213481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
147313481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
147413481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
147513481Sgiacomo.travaglini@arm.com    typename T41, typename T42>
147613481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
147713481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
147813481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, internal::None,
147913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
148013481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None> {
148113481Sgiacomo.travaglini@arm.com  typedef internal::Types42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
148213481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
148313481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
148413481Sgiacomo.travaglini@arm.com      T41, T42> type;
148513481Sgiacomo.travaglini@arm.com};
148613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
148713481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
148813481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
148913481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
149013481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
149113481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
149213481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
149313481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
149413481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43>
149513481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
149613481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
149713481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
149813481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
149913481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None> {
150013481Sgiacomo.travaglini@arm.com  typedef internal::Types43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
150113481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
150213481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
150313481Sgiacomo.travaglini@arm.com      T41, T42, T43> type;
150413481Sgiacomo.travaglini@arm.com};
150513481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
150613481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
150713481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
150813481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
150913481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
151013481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
151113481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
151213481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
151313481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44>
151413481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
151513481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
151613481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
151713481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
151813481Sgiacomo.travaglini@arm.com    internal::None, internal::None> {
151913481Sgiacomo.travaglini@arm.com  typedef internal::Types44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
152013481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
152113481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
152213481Sgiacomo.travaglini@arm.com      T41, T42, T43, T44> type;
152313481Sgiacomo.travaglini@arm.com};
152413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
152513481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
152613481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
152713481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
152813481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
152913481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
153013481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
153113481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
153213481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44, typename T45>
153313481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
153413481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
153513481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
153613481Sgiacomo.travaglini@arm.com    internal::None, internal::None, internal::None, internal::None,
153713481Sgiacomo.travaglini@arm.com    internal::None> {
153813481Sgiacomo.travaglini@arm.com  typedef internal::Types45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
153913481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
154013481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
154113481Sgiacomo.travaglini@arm.com      T41, T42, T43, T44, T45> type;
154213481Sgiacomo.travaglini@arm.com};
154313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
154413481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
154513481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
154613481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
154713481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
154813481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
154913481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
155013481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
155113481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44, typename T45,
155213481Sgiacomo.travaglini@arm.com    typename T46>
155313481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
155413481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
155513481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
155613481Sgiacomo.travaglini@arm.com    T46, internal::None, internal::None, internal::None, internal::None> {
155713481Sgiacomo.travaglini@arm.com  typedef internal::Types46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
155813481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
155913481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
156013481Sgiacomo.travaglini@arm.com      T41, T42, T43, T44, T45, T46> type;
156113481Sgiacomo.travaglini@arm.com};
156213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
156313481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
156413481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
156513481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
156613481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
156713481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
156813481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
156913481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
157013481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44, typename T45,
157113481Sgiacomo.travaglini@arm.com    typename T46, typename T47>
157213481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
157313481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
157413481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
157513481Sgiacomo.travaglini@arm.com    T46, T47, internal::None, internal::None, internal::None> {
157613481Sgiacomo.travaglini@arm.com  typedef internal::Types47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
157713481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
157813481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
157913481Sgiacomo.travaglini@arm.com      T41, T42, T43, T44, T45, T46, T47> type;
158013481Sgiacomo.travaglini@arm.com};
158113481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
158213481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
158313481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
158413481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
158513481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
158613481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
158713481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
158813481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
158913481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44, typename T45,
159013481Sgiacomo.travaglini@arm.com    typename T46, typename T47, typename T48>
159113481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
159213481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
159313481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
159413481Sgiacomo.travaglini@arm.com    T46, T47, T48, internal::None, internal::None> {
159513481Sgiacomo.travaglini@arm.com  typedef internal::Types48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
159613481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
159713481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
159813481Sgiacomo.travaglini@arm.com      T41, T42, T43, T44, T45, T46, T47, T48> type;
159913481Sgiacomo.travaglini@arm.com};
160013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
160113481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
160213481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
160313481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
160413481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
160513481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
160613481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
160713481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
160813481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44, typename T45,
160913481Sgiacomo.travaglini@arm.com    typename T46, typename T47, typename T48, typename T49>
161013481Sgiacomo.travaglini@arm.comstruct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
161113481Sgiacomo.travaglini@arm.com    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
161213481Sgiacomo.travaglini@arm.com    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
161313481Sgiacomo.travaglini@arm.com    T46, T47, T48, T49, internal::None> {
161413481Sgiacomo.travaglini@arm.com  typedef internal::Types49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
161513481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
161613481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
161713481Sgiacomo.travaglini@arm.com      T41, T42, T43, T44, T45, T46, T47, T48, T49> type;
161813481Sgiacomo.travaglini@arm.com};
161913481Sgiacomo.travaglini@arm.com
162013481Sgiacomo.travaglini@arm.comnamespace internal {
162113481Sgiacomo.travaglini@arm.com
162213481Sgiacomo.travaglini@arm.com# define GTEST_TEMPLATE_ template <typename T> class
162313481Sgiacomo.travaglini@arm.com
162413481Sgiacomo.travaglini@arm.com// The template "selector" struct TemplateSel<Tmpl> is used to
162513481Sgiacomo.travaglini@arm.com// represent Tmpl, which must be a class template with one type
162613481Sgiacomo.travaglini@arm.com// parameter, as a type.  TemplateSel<Tmpl>::Bind<T>::type is defined
162713481Sgiacomo.travaglini@arm.com// as the type Tmpl<T>.  This allows us to actually instantiate the
162813481Sgiacomo.travaglini@arm.com// template "selected" by TemplateSel<Tmpl>.
162913481Sgiacomo.travaglini@arm.com//
163013481Sgiacomo.travaglini@arm.com// This trick is necessary for simulating typedef for class templates,
163113481Sgiacomo.travaglini@arm.com// which C++ doesn't support directly.
163213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ Tmpl>
163313481Sgiacomo.travaglini@arm.comstruct TemplateSel {
163413481Sgiacomo.travaglini@arm.com  template <typename T>
163513481Sgiacomo.travaglini@arm.com  struct Bind {
163613481Sgiacomo.travaglini@arm.com    typedef Tmpl<T> type;
163713481Sgiacomo.travaglini@arm.com  };
163813481Sgiacomo.travaglini@arm.com};
163913481Sgiacomo.travaglini@arm.com
164013481Sgiacomo.travaglini@arm.com# define GTEST_BIND_(TmplSel, T) \
164113481Sgiacomo.travaglini@arm.com  TmplSel::template Bind<T>::type
164213481Sgiacomo.travaglini@arm.com
164313481Sgiacomo.travaglini@arm.com// A unique struct template used as the default value for the
164413481Sgiacomo.travaglini@arm.com// arguments of class template Templates.  This allows us to simulate
164513481Sgiacomo.travaglini@arm.com// variadic templates (e.g. Templates<int>, Templates<int, double>,
164613481Sgiacomo.travaglini@arm.com// and etc), which C++ doesn't support directly.
164713481Sgiacomo.travaglini@arm.comtemplate <typename T>
164813481Sgiacomo.travaglini@arm.comstruct NoneT {};
164913481Sgiacomo.travaglini@arm.com
165013481Sgiacomo.travaglini@arm.com// The following family of struct and struct templates are used to
165113481Sgiacomo.travaglini@arm.com// represent template lists.  In particular, TemplatesN<T1, T2, ...,
165213481Sgiacomo.travaglini@arm.com// TN> represents a list of N templates (T1, T2, ..., and TN).  Except
165313481Sgiacomo.travaglini@arm.com// for Templates0, every struct in the family has two member types:
165413481Sgiacomo.travaglini@arm.com// Head for the selector of the first template in the list, and Tail
165513481Sgiacomo.travaglini@arm.com// for the rest of the list.
165613481Sgiacomo.travaglini@arm.com
165713481Sgiacomo.travaglini@arm.com// The empty template list.
165813481Sgiacomo.travaglini@arm.comstruct Templates0 {};
165913481Sgiacomo.travaglini@arm.com
166013481Sgiacomo.travaglini@arm.com// Template lists of length 1, 2, 3, and so on.
166113481Sgiacomo.travaglini@arm.com
166213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1>
166313481Sgiacomo.travaglini@arm.comstruct Templates1 {
166413481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
166513481Sgiacomo.travaglini@arm.com  typedef Templates0 Tail;
166613481Sgiacomo.travaglini@arm.com};
166713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
166813481Sgiacomo.travaglini@arm.comstruct Templates2 {
166913481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
167013481Sgiacomo.travaglini@arm.com  typedef Templates1<T2> Tail;
167113481Sgiacomo.travaglini@arm.com};
167213481Sgiacomo.travaglini@arm.com
167313481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
167413481Sgiacomo.travaglini@arm.comstruct Templates3 {
167513481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
167613481Sgiacomo.travaglini@arm.com  typedef Templates2<T2, T3> Tail;
167713481Sgiacomo.travaglini@arm.com};
167813481Sgiacomo.travaglini@arm.com
167913481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
168013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4>
168113481Sgiacomo.travaglini@arm.comstruct Templates4 {
168213481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
168313481Sgiacomo.travaglini@arm.com  typedef Templates3<T2, T3, T4> Tail;
168413481Sgiacomo.travaglini@arm.com};
168513481Sgiacomo.travaglini@arm.com
168613481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
168713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
168813481Sgiacomo.travaglini@arm.comstruct Templates5 {
168913481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
169013481Sgiacomo.travaglini@arm.com  typedef Templates4<T2, T3, T4, T5> Tail;
169113481Sgiacomo.travaglini@arm.com};
169213481Sgiacomo.travaglini@arm.com
169313481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
169413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
169513481Sgiacomo.travaglini@arm.comstruct Templates6 {
169613481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
169713481Sgiacomo.travaglini@arm.com  typedef Templates5<T2, T3, T4, T5, T6> Tail;
169813481Sgiacomo.travaglini@arm.com};
169913481Sgiacomo.travaglini@arm.com
170013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
170113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
170213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7>
170313481Sgiacomo.travaglini@arm.comstruct Templates7 {
170413481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
170513481Sgiacomo.travaglini@arm.com  typedef Templates6<T2, T3, T4, T5, T6, T7> Tail;
170613481Sgiacomo.travaglini@arm.com};
170713481Sgiacomo.travaglini@arm.com
170813481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
170913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
171013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
171113481Sgiacomo.travaglini@arm.comstruct Templates8 {
171213481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
171313481Sgiacomo.travaglini@arm.com  typedef Templates7<T2, T3, T4, T5, T6, T7, T8> Tail;
171413481Sgiacomo.travaglini@arm.com};
171513481Sgiacomo.travaglini@arm.com
171613481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
171713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
171813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
171913481Sgiacomo.travaglini@arm.comstruct Templates9 {
172013481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
172113481Sgiacomo.travaglini@arm.com  typedef Templates8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
172213481Sgiacomo.travaglini@arm.com};
172313481Sgiacomo.travaglini@arm.com
172413481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
172513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
172613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
172713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10>
172813481Sgiacomo.travaglini@arm.comstruct Templates10 {
172913481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
173013481Sgiacomo.travaglini@arm.com  typedef Templates9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
173113481Sgiacomo.travaglini@arm.com};
173213481Sgiacomo.travaglini@arm.com
173313481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
173413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
173513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
173613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
173713481Sgiacomo.travaglini@arm.comstruct Templates11 {
173813481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
173913481Sgiacomo.travaglini@arm.com  typedef Templates10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
174013481Sgiacomo.travaglini@arm.com};
174113481Sgiacomo.travaglini@arm.com
174213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
174313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
174413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
174513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
174613481Sgiacomo.travaglini@arm.comstruct Templates12 {
174713481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
174813481Sgiacomo.travaglini@arm.com  typedef Templates11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
174913481Sgiacomo.travaglini@arm.com};
175013481Sgiacomo.travaglini@arm.com
175113481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
175213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
175313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
175413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
175513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13>
175613481Sgiacomo.travaglini@arm.comstruct Templates13 {
175713481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
175813481Sgiacomo.travaglini@arm.com  typedef Templates12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
175913481Sgiacomo.travaglini@arm.com};
176013481Sgiacomo.travaglini@arm.com
176113481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
176213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
176313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
176413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
176513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
176613481Sgiacomo.travaglini@arm.comstruct Templates14 {
176713481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
176813481Sgiacomo.travaglini@arm.com  typedef Templates13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
176913481Sgiacomo.travaglini@arm.com      T14> Tail;
177013481Sgiacomo.travaglini@arm.com};
177113481Sgiacomo.travaglini@arm.com
177213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
177313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
177413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
177513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
177613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
177713481Sgiacomo.travaglini@arm.comstruct Templates15 {
177813481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
177913481Sgiacomo.travaglini@arm.com  typedef Templates14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
178013481Sgiacomo.travaglini@arm.com      T15> Tail;
178113481Sgiacomo.travaglini@arm.com};
178213481Sgiacomo.travaglini@arm.com
178313481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
178413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
178513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
178613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
178713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
178813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16>
178913481Sgiacomo.travaglini@arm.comstruct Templates16 {
179013481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
179113481Sgiacomo.travaglini@arm.com  typedef Templates15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
179213481Sgiacomo.travaglini@arm.com      T15, T16> Tail;
179313481Sgiacomo.travaglini@arm.com};
179413481Sgiacomo.travaglini@arm.com
179513481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
179613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
179713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
179813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
179913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
180013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
180113481Sgiacomo.travaglini@arm.comstruct Templates17 {
180213481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
180313481Sgiacomo.travaglini@arm.com  typedef Templates16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
180413481Sgiacomo.travaglini@arm.com      T15, T16, T17> Tail;
180513481Sgiacomo.travaglini@arm.com};
180613481Sgiacomo.travaglini@arm.com
180713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
180813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
180913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
181013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
181113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
181213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
181313481Sgiacomo.travaglini@arm.comstruct Templates18 {
181413481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
181513481Sgiacomo.travaglini@arm.com  typedef Templates17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
181613481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18> Tail;
181713481Sgiacomo.travaglini@arm.com};
181813481Sgiacomo.travaglini@arm.com
181913481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
182013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
182113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
182213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
182313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
182413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
182513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19>
182613481Sgiacomo.travaglini@arm.comstruct Templates19 {
182713481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
182813481Sgiacomo.travaglini@arm.com  typedef Templates18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
182913481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19> Tail;
183013481Sgiacomo.travaglini@arm.com};
183113481Sgiacomo.travaglini@arm.com
183213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
183313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
183413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
183513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
183613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
183713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
183813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
183913481Sgiacomo.travaglini@arm.comstruct Templates20 {
184013481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
184113481Sgiacomo.travaglini@arm.com  typedef Templates19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
184213481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20> Tail;
184313481Sgiacomo.travaglini@arm.com};
184413481Sgiacomo.travaglini@arm.com
184513481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
184613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
184713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
184813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
184913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
185013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
185113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
185213481Sgiacomo.travaglini@arm.comstruct Templates21 {
185313481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
185413481Sgiacomo.travaglini@arm.com  typedef Templates20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
185513481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21> Tail;
185613481Sgiacomo.travaglini@arm.com};
185713481Sgiacomo.travaglini@arm.com
185813481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
185913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
186013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
186113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
186213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
186313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
186413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
186513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22>
186613481Sgiacomo.travaglini@arm.comstruct Templates22 {
186713481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
186813481Sgiacomo.travaglini@arm.com  typedef Templates21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
186913481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22> Tail;
187013481Sgiacomo.travaglini@arm.com};
187113481Sgiacomo.travaglini@arm.com
187213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
187313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
187413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
187513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
187613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
187713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
187813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
187913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
188013481Sgiacomo.travaglini@arm.comstruct Templates23 {
188113481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
188213481Sgiacomo.travaglini@arm.com  typedef Templates22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
188313481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23> Tail;
188413481Sgiacomo.travaglini@arm.com};
188513481Sgiacomo.travaglini@arm.com
188613481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
188713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
188813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
188913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
189013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
189113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
189213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
189313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
189413481Sgiacomo.travaglini@arm.comstruct Templates24 {
189513481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
189613481Sgiacomo.travaglini@arm.com  typedef Templates23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
189713481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
189813481Sgiacomo.travaglini@arm.com};
189913481Sgiacomo.travaglini@arm.com
190013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
190113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
190213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
190313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
190413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
190513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
190613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
190713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
190813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25>
190913481Sgiacomo.travaglini@arm.comstruct Templates25 {
191013481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
191113481Sgiacomo.travaglini@arm.com  typedef Templates24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
191213481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
191313481Sgiacomo.travaglini@arm.com};
191413481Sgiacomo.travaglini@arm.com
191513481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
191613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
191713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
191813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
191913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
192013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
192113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
192213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
192313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
192413481Sgiacomo.travaglini@arm.comstruct Templates26 {
192513481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
192613481Sgiacomo.travaglini@arm.com  typedef Templates25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
192713481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
192813481Sgiacomo.travaglini@arm.com};
192913481Sgiacomo.travaglini@arm.com
193013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
193113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
193213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
193313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
193413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
193513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
193613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
193713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
193813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
193913481Sgiacomo.travaglini@arm.comstruct Templates27 {
194013481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
194113481Sgiacomo.travaglini@arm.com  typedef Templates26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
194213481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
194313481Sgiacomo.travaglini@arm.com};
194413481Sgiacomo.travaglini@arm.com
194513481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
194613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
194713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
194813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
194913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
195013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
195113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
195213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
195313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
195413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28>
195513481Sgiacomo.travaglini@arm.comstruct Templates28 {
195613481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
195713481Sgiacomo.travaglini@arm.com  typedef Templates27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
195813481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
195913481Sgiacomo.travaglini@arm.com      T28> Tail;
196013481Sgiacomo.travaglini@arm.com};
196113481Sgiacomo.travaglini@arm.com
196213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
196313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
196413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
196513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
196613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
196713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
196813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
196913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
197013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
197113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
197213481Sgiacomo.travaglini@arm.comstruct Templates29 {
197313481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
197413481Sgiacomo.travaglini@arm.com  typedef Templates28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
197513481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
197613481Sgiacomo.travaglini@arm.com      T29> Tail;
197713481Sgiacomo.travaglini@arm.com};
197813481Sgiacomo.travaglini@arm.com
197913481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
198013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
198113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
198213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
198313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
198413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
198513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
198613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
198713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
198813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
198913481Sgiacomo.travaglini@arm.comstruct Templates30 {
199013481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
199113481Sgiacomo.travaglini@arm.com  typedef Templates29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
199213481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
199313481Sgiacomo.travaglini@arm.com      T29, T30> Tail;
199413481Sgiacomo.travaglini@arm.com};
199513481Sgiacomo.travaglini@arm.com
199613481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
199713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
199813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
199913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
200013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
200113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
200213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
200313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
200413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
200513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
200613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31>
200713481Sgiacomo.travaglini@arm.comstruct Templates31 {
200813481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
200913481Sgiacomo.travaglini@arm.com  typedef Templates30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
201013481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
201113481Sgiacomo.travaglini@arm.com      T29, T30, T31> Tail;
201213481Sgiacomo.travaglini@arm.com};
201313481Sgiacomo.travaglini@arm.com
201413481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
201513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
201613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
201713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
201813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
201913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
202013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
202113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
202213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
202313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
202413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
202513481Sgiacomo.travaglini@arm.comstruct Templates32 {
202613481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
202713481Sgiacomo.travaglini@arm.com  typedef Templates31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
202813481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
202913481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32> Tail;
203013481Sgiacomo.travaglini@arm.com};
203113481Sgiacomo.travaglini@arm.com
203213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
203313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
203413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
203513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
203613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
203713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
203813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
203913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
204013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
204113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
204213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
204313481Sgiacomo.travaglini@arm.comstruct Templates33 {
204413481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
204513481Sgiacomo.travaglini@arm.com  typedef Templates32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
204613481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
204713481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33> Tail;
204813481Sgiacomo.travaglini@arm.com};
204913481Sgiacomo.travaglini@arm.com
205013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
205113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
205213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
205313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
205413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
205513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
205613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
205713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
205813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
205913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
206013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
206113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34>
206213481Sgiacomo.travaglini@arm.comstruct Templates34 {
206313481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
206413481Sgiacomo.travaglini@arm.com  typedef Templates33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
206513481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
206613481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34> Tail;
206713481Sgiacomo.travaglini@arm.com};
206813481Sgiacomo.travaglini@arm.com
206913481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
207013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
207113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
207213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
207313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
207413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
207513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
207613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
207713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
207813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
207913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
208013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
208113481Sgiacomo.travaglini@arm.comstruct Templates35 {
208213481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
208313481Sgiacomo.travaglini@arm.com  typedef Templates34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
208413481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
208513481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35> Tail;
208613481Sgiacomo.travaglini@arm.com};
208713481Sgiacomo.travaglini@arm.com
208813481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
208913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
209013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
209113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
209213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
209313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
209413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
209513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
209613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
209713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
209813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
209913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
210013481Sgiacomo.travaglini@arm.comstruct Templates36 {
210113481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
210213481Sgiacomo.travaglini@arm.com  typedef Templates35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
210313481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
210413481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36> Tail;
210513481Sgiacomo.travaglini@arm.com};
210613481Sgiacomo.travaglini@arm.com
210713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
210813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
210913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
211013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
211113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
211213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
211313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
211413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
211513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
211613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
211713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
211813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
211913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37>
212013481Sgiacomo.travaglini@arm.comstruct Templates37 {
212113481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
212213481Sgiacomo.travaglini@arm.com  typedef Templates36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
212313481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
212413481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37> Tail;
212513481Sgiacomo.travaglini@arm.com};
212613481Sgiacomo.travaglini@arm.com
212713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
212813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
212913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
213013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
213113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
213213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
213313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
213413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
213513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
213613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
213713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
213813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
213913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
214013481Sgiacomo.travaglini@arm.comstruct Templates38 {
214113481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
214213481Sgiacomo.travaglini@arm.com  typedef Templates37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
214313481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
214413481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
214513481Sgiacomo.travaglini@arm.com};
214613481Sgiacomo.travaglini@arm.com
214713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
214813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
214913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
215013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
215113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
215213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
215313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
215413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
215513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
215613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
215713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
215813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
215913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
216013481Sgiacomo.travaglini@arm.comstruct Templates39 {
216113481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
216213481Sgiacomo.travaglini@arm.com  typedef Templates38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
216313481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
216413481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
216513481Sgiacomo.travaglini@arm.com};
216613481Sgiacomo.travaglini@arm.com
216713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
216813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
216913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
217013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
217113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
217213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
217313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
217413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
217513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
217613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
217713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
217813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
217913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
218013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40>
218113481Sgiacomo.travaglini@arm.comstruct Templates40 {
218213481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
218313481Sgiacomo.travaglini@arm.com  typedef Templates39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
218413481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
218513481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
218613481Sgiacomo.travaglini@arm.com};
218713481Sgiacomo.travaglini@arm.com
218813481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
218913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
219013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
219113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
219213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
219313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
219413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
219513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
219613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
219713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
219813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
219913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
220013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
220113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
220213481Sgiacomo.travaglini@arm.comstruct Templates41 {
220313481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
220413481Sgiacomo.travaglini@arm.com  typedef Templates40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
220513481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
220613481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
220713481Sgiacomo.travaglini@arm.com};
220813481Sgiacomo.travaglini@arm.com
220913481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
221013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
221113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
221213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
221313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
221413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
221513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
221613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
221713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
221813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
221913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
222013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
222113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
222213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
222313481Sgiacomo.travaglini@arm.comstruct Templates42 {
222413481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
222513481Sgiacomo.travaglini@arm.com  typedef Templates41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
222613481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
222713481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
222813481Sgiacomo.travaglini@arm.com      T42> Tail;
222913481Sgiacomo.travaglini@arm.com};
223013481Sgiacomo.travaglini@arm.com
223113481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
223213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
223313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
223413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
223513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
223613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
223713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
223813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
223913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
224013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
224113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
224213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
224313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
224413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
224513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43>
224613481Sgiacomo.travaglini@arm.comstruct Templates43 {
224713481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
224813481Sgiacomo.travaglini@arm.com  typedef Templates42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
224913481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
225013481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
225113481Sgiacomo.travaglini@arm.com      T43> Tail;
225213481Sgiacomo.travaglini@arm.com};
225313481Sgiacomo.travaglini@arm.com
225413481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
225513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
225613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
225713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
225813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
225913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
226013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
226113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
226213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
226313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
226413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
226513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
226613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
226713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
226813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
226913481Sgiacomo.travaglini@arm.comstruct Templates44 {
227013481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
227113481Sgiacomo.travaglini@arm.com  typedef Templates43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
227213481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
227313481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
227413481Sgiacomo.travaglini@arm.com      T43, T44> Tail;
227513481Sgiacomo.travaglini@arm.com};
227613481Sgiacomo.travaglini@arm.com
227713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
227813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
227913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
228013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
228113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
228213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
228313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
228413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
228513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
228613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
228713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
228813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
228913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
229013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
229113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
229213481Sgiacomo.travaglini@arm.comstruct Templates45 {
229313481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
229413481Sgiacomo.travaglini@arm.com  typedef Templates44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
229513481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
229613481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
229713481Sgiacomo.travaglini@arm.com      T43, T44, T45> Tail;
229813481Sgiacomo.travaglini@arm.com};
229913481Sgiacomo.travaglini@arm.com
230013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
230113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
230213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
230313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
230413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
230513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
230613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
230713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
230813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
230913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
231013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
231113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
231213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
231313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
231413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
231513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T46>
231613481Sgiacomo.travaglini@arm.comstruct Templates46 {
231713481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
231813481Sgiacomo.travaglini@arm.com  typedef Templates45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
231913481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
232013481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
232113481Sgiacomo.travaglini@arm.com      T43, T44, T45, T46> Tail;
232213481Sgiacomo.travaglini@arm.com};
232313481Sgiacomo.travaglini@arm.com
232413481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
232513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
232613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
232713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
232813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
232913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
233013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
233113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
233213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
233313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
233413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
233513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
233613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
233713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
233813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
233913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
234013481Sgiacomo.travaglini@arm.comstruct Templates47 {
234113481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
234213481Sgiacomo.travaglini@arm.com  typedef Templates46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
234313481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
234413481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
234513481Sgiacomo.travaglini@arm.com      T43, T44, T45, T46, T47> Tail;
234613481Sgiacomo.travaglini@arm.com};
234713481Sgiacomo.travaglini@arm.com
234813481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
234913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
235013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
235113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
235213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
235313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
235413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
235513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
235613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
235713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
235813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
235913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
236013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
236113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
236213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
236313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
236413481Sgiacomo.travaglini@arm.comstruct Templates48 {
236513481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
236613481Sgiacomo.travaglini@arm.com  typedef Templates47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
236713481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
236813481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
236913481Sgiacomo.travaglini@arm.com      T43, T44, T45, T46, T47, T48> Tail;
237013481Sgiacomo.travaglini@arm.com};
237113481Sgiacomo.travaglini@arm.com
237213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
237313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
237413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
237513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
237613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
237713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
237813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
237913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
238013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
238113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
238213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
238313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
238413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
238513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
238613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
238713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
238813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T49>
238913481Sgiacomo.travaglini@arm.comstruct Templates49 {
239013481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
239113481Sgiacomo.travaglini@arm.com  typedef Templates48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
239213481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
239313481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
239413481Sgiacomo.travaglini@arm.com      T43, T44, T45, T46, T47, T48, T49> Tail;
239513481Sgiacomo.travaglini@arm.com};
239613481Sgiacomo.travaglini@arm.com
239713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
239813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
239913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
240013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
240113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
240213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
240313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
240413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
240513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
240613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
240713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
240813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
240913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
241013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
241113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
241213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
241313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T49, GTEST_TEMPLATE_ T50>
241413481Sgiacomo.travaglini@arm.comstruct Templates50 {
241513481Sgiacomo.travaglini@arm.com  typedef TemplateSel<T1> Head;
241613481Sgiacomo.travaglini@arm.com  typedef Templates49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
241713481Sgiacomo.travaglini@arm.com      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
241813481Sgiacomo.travaglini@arm.com      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
241913481Sgiacomo.travaglini@arm.com      T43, T44, T45, T46, T47, T48, T49, T50> Tail;
242013481Sgiacomo.travaglini@arm.com};
242113481Sgiacomo.travaglini@arm.com
242213481Sgiacomo.travaglini@arm.com
242313481Sgiacomo.travaglini@arm.com// We don't want to require the users to write TemplatesN<...> directly,
242413481Sgiacomo.travaglini@arm.com// as that would require them to count the length.  Templates<...> is much
242513481Sgiacomo.travaglini@arm.com// easier to write, but generates horrible messages when there is a
242613481Sgiacomo.travaglini@arm.com// compiler error, as gcc insists on printing out each template
242713481Sgiacomo.travaglini@arm.com// argument, even if it has the default value (this means Templates<list>
242813481Sgiacomo.travaglini@arm.com// will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
242913481Sgiacomo.travaglini@arm.com// errors).
243013481Sgiacomo.travaglini@arm.com//
243113481Sgiacomo.travaglini@arm.com// Our solution is to combine the best part of the two approaches: a
243213481Sgiacomo.travaglini@arm.com// user would write Templates<T1, ..., TN>, and Google Test will translate
243313481Sgiacomo.travaglini@arm.com// that to TemplatesN<T1, ..., TN> internally to make error messages
243413481Sgiacomo.travaglini@arm.com// readable.  The translation is done by the 'type' member of the
243513481Sgiacomo.travaglini@arm.com// Templates template.
243613481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1 = NoneT, GTEST_TEMPLATE_ T2 = NoneT,
243713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T3 = NoneT, GTEST_TEMPLATE_ T4 = NoneT,
243813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T5 = NoneT, GTEST_TEMPLATE_ T6 = NoneT,
243913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7 = NoneT, GTEST_TEMPLATE_ T8 = NoneT,
244013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T9 = NoneT, GTEST_TEMPLATE_ T10 = NoneT,
244113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T11 = NoneT, GTEST_TEMPLATE_ T12 = NoneT,
244213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13 = NoneT, GTEST_TEMPLATE_ T14 = NoneT,
244313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T15 = NoneT, GTEST_TEMPLATE_ T16 = NoneT,
244413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T17 = NoneT, GTEST_TEMPLATE_ T18 = NoneT,
244513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19 = NoneT, GTEST_TEMPLATE_ T20 = NoneT,
244613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T21 = NoneT, GTEST_TEMPLATE_ T22 = NoneT,
244713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T23 = NoneT, GTEST_TEMPLATE_ T24 = NoneT,
244813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25 = NoneT, GTEST_TEMPLATE_ T26 = NoneT,
244913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T27 = NoneT, GTEST_TEMPLATE_ T28 = NoneT,
245013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T29 = NoneT, GTEST_TEMPLATE_ T30 = NoneT,
245113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31 = NoneT, GTEST_TEMPLATE_ T32 = NoneT,
245213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T33 = NoneT, GTEST_TEMPLATE_ T34 = NoneT,
245313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T35 = NoneT, GTEST_TEMPLATE_ T36 = NoneT,
245413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37 = NoneT, GTEST_TEMPLATE_ T38 = NoneT,
245513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T39 = NoneT, GTEST_TEMPLATE_ T40 = NoneT,
245613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T41 = NoneT, GTEST_TEMPLATE_ T42 = NoneT,
245713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43 = NoneT, GTEST_TEMPLATE_ T44 = NoneT,
245813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T45 = NoneT, GTEST_TEMPLATE_ T46 = NoneT,
245913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T47 = NoneT, GTEST_TEMPLATE_ T48 = NoneT,
246013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T49 = NoneT, GTEST_TEMPLATE_ T50 = NoneT>
246113481Sgiacomo.travaglini@arm.comstruct Templates {
246213481Sgiacomo.travaglini@arm.com  typedef Templates50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
246313481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
246413481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
246513481Sgiacomo.travaglini@arm.com      T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
246613481Sgiacomo.travaglini@arm.com};
246713481Sgiacomo.travaglini@arm.com
246813481Sgiacomo.travaglini@arm.comtemplate <>
246913481Sgiacomo.travaglini@arm.comstruct Templates<NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
247013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
247113481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
247213481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
247313481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
247413481Sgiacomo.travaglini@arm.com    NoneT> {
247513481Sgiacomo.travaglini@arm.com  typedef Templates0 type;
247613481Sgiacomo.travaglini@arm.com};
247713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1>
247813481Sgiacomo.travaglini@arm.comstruct Templates<T1, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
247913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
248013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
248113481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
248213481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
248313481Sgiacomo.travaglini@arm.com    NoneT> {
248413481Sgiacomo.travaglini@arm.com  typedef Templates1<T1> type;
248513481Sgiacomo.travaglini@arm.com};
248613481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
248713481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
248813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
248913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
249013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
249113481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
249213481Sgiacomo.travaglini@arm.com    NoneT> {
249313481Sgiacomo.travaglini@arm.com  typedef Templates2<T1, T2> type;
249413481Sgiacomo.travaglini@arm.com};
249513481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
249613481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
249713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
249813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
249913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
250013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
250113481Sgiacomo.travaglini@arm.com  typedef Templates3<T1, T2, T3> type;
250213481Sgiacomo.travaglini@arm.com};
250313481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
250413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4>
250513481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
250613481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
250713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
250813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
250913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
251013481Sgiacomo.travaglini@arm.com  typedef Templates4<T1, T2, T3, T4> type;
251113481Sgiacomo.travaglini@arm.com};
251213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
251313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
251413481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
251513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
251613481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
251713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
251813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
251913481Sgiacomo.travaglini@arm.com  typedef Templates5<T1, T2, T3, T4, T5> type;
252013481Sgiacomo.travaglini@arm.com};
252113481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
252213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
252313481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, NoneT, NoneT, NoneT, NoneT, NoneT,
252413481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
252513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
252613481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
252713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
252813481Sgiacomo.travaglini@arm.com  typedef Templates6<T1, T2, T3, T4, T5, T6> type;
252913481Sgiacomo.travaglini@arm.com};
253013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
253113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
253213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7>
253313481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, NoneT, NoneT, NoneT, NoneT, NoneT,
253413481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
253513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
253613481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
253713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
253813481Sgiacomo.travaglini@arm.com  typedef Templates7<T1, T2, T3, T4, T5, T6, T7> type;
253913481Sgiacomo.travaglini@arm.com};
254013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
254113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
254213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
254313481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, NoneT, NoneT, NoneT, NoneT,
254413481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
254513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
254613481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
254713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
254813481Sgiacomo.travaglini@arm.com  typedef Templates8<T1, T2, T3, T4, T5, T6, T7, T8> type;
254913481Sgiacomo.travaglini@arm.com};
255013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
255113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
255213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
255313481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, NoneT, NoneT, NoneT,
255413481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
255513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
255613481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
255713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
255813481Sgiacomo.travaglini@arm.com  typedef Templates9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
255913481Sgiacomo.travaglini@arm.com};
256013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
256113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
256213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
256313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10>
256413481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NoneT, NoneT, NoneT,
256513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
256613481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
256713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
256813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
256913481Sgiacomo.travaglini@arm.com  typedef Templates10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
257013481Sgiacomo.travaglini@arm.com};
257113481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
257213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
257313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
257413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
257513481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NoneT, NoneT,
257613481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
257713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
257813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
257913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
258013481Sgiacomo.travaglini@arm.com  typedef Templates11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
258113481Sgiacomo.travaglini@arm.com};
258213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
258313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
258413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
258513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
258613481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NoneT,
258713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
258813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
258913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
259013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
259113481Sgiacomo.travaglini@arm.com  typedef Templates12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> type;
259213481Sgiacomo.travaglini@arm.com};
259313481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
259413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
259513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
259613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
259713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13>
259813481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, NoneT,
259913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
260013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
260113481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
260213481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
260313481Sgiacomo.travaglini@arm.com  typedef Templates13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
260413481Sgiacomo.travaglini@arm.com      T13> type;
260513481Sgiacomo.travaglini@arm.com};
260613481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
260713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
260813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
260913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
261013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
261113481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
261213481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
261313481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
261413481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
261513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
261613481Sgiacomo.travaglini@arm.com  typedef Templates14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
261713481Sgiacomo.travaglini@arm.com      T14> type;
261813481Sgiacomo.travaglini@arm.com};
261913481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
262013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
262113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
262213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
262313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
262413481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
262513481Sgiacomo.travaglini@arm.com    T15, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
262613481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
262713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
262813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT> {
262913481Sgiacomo.travaglini@arm.com  typedef Templates15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
263013481Sgiacomo.travaglini@arm.com      T14, T15> type;
263113481Sgiacomo.travaglini@arm.com};
263213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
263313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
263413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
263513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
263613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
263713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16>
263813481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
263913481Sgiacomo.travaglini@arm.com    T15, T16, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
264013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
264113481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
264213481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT> {
264313481Sgiacomo.travaglini@arm.com  typedef Templates16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
264413481Sgiacomo.travaglini@arm.com      T14, T15, T16> type;
264513481Sgiacomo.travaglini@arm.com};
264613481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
264713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
264813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
264913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
265013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
265113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
265213481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
265313481Sgiacomo.travaglini@arm.com    T15, T16, T17, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
265413481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
265513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
265613481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT> {
265713481Sgiacomo.travaglini@arm.com  typedef Templates17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
265813481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17> type;
265913481Sgiacomo.travaglini@arm.com};
266013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
266113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
266213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
266313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
266413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
266513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
266613481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
266713481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
266813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
266913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
267013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT> {
267113481Sgiacomo.travaglini@arm.com  typedef Templates18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
267213481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18> type;
267313481Sgiacomo.travaglini@arm.com};
267413481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
267513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
267613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
267713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
267813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
267913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
268013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19>
268113481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
268213481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
268313481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
268413481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
268513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT> {
268613481Sgiacomo.travaglini@arm.com  typedef Templates19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
268713481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19> type;
268813481Sgiacomo.travaglini@arm.com};
268913481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
269013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
269113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
269213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
269313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
269413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
269513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
269613481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
269713481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
269813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
269913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
270013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT> {
270113481Sgiacomo.travaglini@arm.com  typedef Templates20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
270213481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20> type;
270313481Sgiacomo.travaglini@arm.com};
270413481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
270513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
270613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
270713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
270813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
270913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
271013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
271113481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
271213481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, NoneT, NoneT, NoneT, NoneT, NoneT,
271313481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
271413481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
271513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT> {
271613481Sgiacomo.travaglini@arm.com  typedef Templates21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
271713481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21> type;
271813481Sgiacomo.travaglini@arm.com};
271913481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
272013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
272113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
272213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
272313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
272413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
272513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
272613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22>
272713481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
272813481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, NoneT, NoneT, NoneT, NoneT, NoneT,
272913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
273013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
273113481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT> {
273213481Sgiacomo.travaglini@arm.com  typedef Templates22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
273313481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
273413481Sgiacomo.travaglini@arm.com};
273513481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
273613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
273713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
273813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
273913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
274013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
274113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
274213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
274313481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
274413481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, NoneT, NoneT, NoneT, NoneT,
274513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
274613481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
274713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT> {
274813481Sgiacomo.travaglini@arm.com  typedef Templates23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
274913481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
275013481Sgiacomo.travaglini@arm.com};
275113481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
275213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
275313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
275413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
275513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
275613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
275713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
275813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
275913481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
276013481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, NoneT, NoneT, NoneT,
276113481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
276213481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
276313481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT> {
276413481Sgiacomo.travaglini@arm.com  typedef Templates24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
276513481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
276613481Sgiacomo.travaglini@arm.com};
276713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
276813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
276913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
277013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
277113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
277213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
277313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
277413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
277513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25>
277613481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
277713481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, NoneT, NoneT, NoneT,
277813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
277913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
278013481Sgiacomo.travaglini@arm.com    NoneT, NoneT> {
278113481Sgiacomo.travaglini@arm.com  typedef Templates25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
278213481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
278313481Sgiacomo.travaglini@arm.com};
278413481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
278513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
278613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
278713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
278813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
278913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
279013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
279113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
279213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
279313481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
279413481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, NoneT, NoneT,
279513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
279613481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
279713481Sgiacomo.travaglini@arm.com    NoneT, NoneT> {
279813481Sgiacomo.travaglini@arm.com  typedef Templates26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
279913481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> type;
280013481Sgiacomo.travaglini@arm.com};
280113481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
280213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
280313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
280413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
280513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
280613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
280713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
280813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
280913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
281013481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
281113481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, NoneT,
281213481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
281313481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
281413481Sgiacomo.travaglini@arm.com    NoneT, NoneT> {
281513481Sgiacomo.travaglini@arm.com  typedef Templates27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
281613481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
281713481Sgiacomo.travaglini@arm.com      T27> type;
281813481Sgiacomo.travaglini@arm.com};
281913481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
282013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
282113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
282213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
282313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
282413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
282513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
282613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
282713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
282813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28>
282913481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
283013481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
283113481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
283213481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
283313481Sgiacomo.travaglini@arm.com    NoneT, NoneT> {
283413481Sgiacomo.travaglini@arm.com  typedef Templates28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
283513481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
283613481Sgiacomo.travaglini@arm.com      T28> type;
283713481Sgiacomo.travaglini@arm.com};
283813481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
283913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
284013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
284113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
284213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
284313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
284413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
284513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
284613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
284713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
284813481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
284913481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
285013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
285113481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
285213481Sgiacomo.travaglini@arm.com    NoneT> {
285313481Sgiacomo.travaglini@arm.com  typedef Templates29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
285413481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
285513481Sgiacomo.travaglini@arm.com      T28, T29> type;
285613481Sgiacomo.travaglini@arm.com};
285713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
285813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
285913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
286013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
286113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
286213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
286313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
286413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
286513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
286613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
286713481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
286813481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
286913481Sgiacomo.travaglini@arm.com    T30, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
287013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
287113481Sgiacomo.travaglini@arm.com  typedef Templates30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
287213481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
287313481Sgiacomo.travaglini@arm.com      T28, T29, T30> type;
287413481Sgiacomo.travaglini@arm.com};
287513481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
287613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
287713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
287813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
287913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
288013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
288113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
288213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
288313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
288413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
288513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31>
288613481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
288713481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
288813481Sgiacomo.travaglini@arm.com    T30, T31, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
288913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
289013481Sgiacomo.travaglini@arm.com  typedef Templates31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
289113481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
289213481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31> type;
289313481Sgiacomo.travaglini@arm.com};
289413481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
289513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
289613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
289713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
289813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
289913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
290013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
290113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
290213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
290313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
290413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
290513481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
290613481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
290713481Sgiacomo.travaglini@arm.com    T30, T31, T32, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
290813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
290913481Sgiacomo.travaglini@arm.com  typedef Templates32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
291013481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
291113481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32> type;
291213481Sgiacomo.travaglini@arm.com};
291313481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
291413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
291513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
291613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
291713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
291813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
291913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
292013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
292113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
292213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
292313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
292413481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
292513481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
292613481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
292713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
292813481Sgiacomo.travaglini@arm.com  typedef Templates33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
292913481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
293013481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33> type;
293113481Sgiacomo.travaglini@arm.com};
293213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
293313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
293413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
293513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
293613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
293713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
293813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
293913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
294013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
294113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
294213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
294313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34>
294413481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
294513481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
294613481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
294713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
294813481Sgiacomo.travaglini@arm.com  typedef Templates34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
294913481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
295013481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34> type;
295113481Sgiacomo.travaglini@arm.com};
295213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
295313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
295413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
295513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
295613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
295713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
295813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
295913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
296013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
296113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
296213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
296313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
296413481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
296513481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
296613481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
296713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
296813481Sgiacomo.travaglini@arm.com  typedef Templates35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
296913481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
297013481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35> type;
297113481Sgiacomo.travaglini@arm.com};
297213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
297313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
297413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
297513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
297613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
297713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
297813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
297913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
298013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
298113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
298213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
298313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
298413481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
298513481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
298613481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, NoneT, NoneT, NoneT, NoneT, NoneT,
298713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
298813481Sgiacomo.travaglini@arm.com  typedef Templates36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
298913481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
299013481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
299113481Sgiacomo.travaglini@arm.com};
299213481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
299313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
299413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
299513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
299613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
299713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
299813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
299913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
300013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
300113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
300213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
300313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
300413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37>
300513481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
300613481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
300713481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, NoneT, NoneT, NoneT, NoneT, NoneT,
300813481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
300913481Sgiacomo.travaglini@arm.com  typedef Templates37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
301013481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
301113481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
301213481Sgiacomo.travaglini@arm.com};
301313481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
301413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
301513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
301613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
301713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
301813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
301913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
302013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
302113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
302213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
302313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
302413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
302513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
302613481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
302713481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
302813481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, T38, NoneT, NoneT, NoneT, NoneT,
302913481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
303013481Sgiacomo.travaglini@arm.com  typedef Templates38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
303113481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
303213481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
303313481Sgiacomo.travaglini@arm.com};
303413481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
303513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
303613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
303713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
303813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
303913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
304013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
304113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
304213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
304313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
304413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
304513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
304613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
304713481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
304813481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
304913481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, NoneT, NoneT, NoneT,
305013481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
305113481Sgiacomo.travaglini@arm.com  typedef Templates39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
305213481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
305313481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
305413481Sgiacomo.travaglini@arm.com};
305513481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
305613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
305713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
305813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
305913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
306013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
306113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
306213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
306313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
306413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
306513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
306613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
306713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
306813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40>
306913481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
307013481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
307113481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, NoneT, NoneT, NoneT,
307213481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
307313481Sgiacomo.travaglini@arm.com  typedef Templates40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
307413481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
307513481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> type;
307613481Sgiacomo.travaglini@arm.com};
307713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
307813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
307913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
308013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
308113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
308213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
308313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
308413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
308513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
308613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
308713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
308813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
308913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
309013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
309113481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
309213481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
309313481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, NoneT, NoneT,
309413481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
309513481Sgiacomo.travaglini@arm.com  typedef Templates41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
309613481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
309713481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
309813481Sgiacomo.travaglini@arm.com      T41> type;
309913481Sgiacomo.travaglini@arm.com};
310013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
310113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
310213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
310313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
310413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
310513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
310613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
310713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
310813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
310913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
311013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
311113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
311213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
311313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
311413481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
311513481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
311613481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, NoneT,
311713481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
311813481Sgiacomo.travaglini@arm.com  typedef Templates42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
311913481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
312013481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
312113481Sgiacomo.travaglini@arm.com      T42> type;
312213481Sgiacomo.travaglini@arm.com};
312313481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
312413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
312513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
312613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
312713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
312813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
312913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
313013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
313113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
313213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
313313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
313413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
313513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
313613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
313713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43>
313813481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
313913481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
314013481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
314113481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
314213481Sgiacomo.travaglini@arm.com  typedef Templates43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
314313481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
314413481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
314513481Sgiacomo.travaglini@arm.com      T42, T43> type;
314613481Sgiacomo.travaglini@arm.com};
314713481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
314813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
314913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
315013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
315113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
315213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
315313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
315413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
315513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
315613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
315713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
315813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
315913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
316013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
316113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
316213481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
316313481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
316413481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
316513481Sgiacomo.travaglini@arm.com    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
316613481Sgiacomo.travaglini@arm.com  typedef Templates44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
316713481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
316813481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
316913481Sgiacomo.travaglini@arm.com      T42, T43, T44> type;
317013481Sgiacomo.travaglini@arm.com};
317113481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
317213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
317313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
317413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
317513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
317613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
317713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
317813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
317913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
318013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
318113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
318213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
318313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
318413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
318513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
318613481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
318713481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
318813481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
318913481Sgiacomo.travaglini@arm.com    T45, NoneT, NoneT, NoneT, NoneT, NoneT> {
319013481Sgiacomo.travaglini@arm.com  typedef Templates45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
319113481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
319213481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
319313481Sgiacomo.travaglini@arm.com      T42, T43, T44, T45> type;
319413481Sgiacomo.travaglini@arm.com};
319513481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
319613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
319713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
319813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
319913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
320013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
320113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
320213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
320313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
320413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
320513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
320613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
320713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
320813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
320913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
321013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T46>
321113481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
321213481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
321313481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
321413481Sgiacomo.travaglini@arm.com    T45, T46, NoneT, NoneT, NoneT, NoneT> {
321513481Sgiacomo.travaglini@arm.com  typedef Templates46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
321613481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
321713481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
321813481Sgiacomo.travaglini@arm.com      T42, T43, T44, T45, T46> type;
321913481Sgiacomo.travaglini@arm.com};
322013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
322113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
322213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
322313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
322413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
322513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
322613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
322713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
322813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
322913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
323013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
323113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
323213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
323313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
323413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
323513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
323613481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
323713481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
323813481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
323913481Sgiacomo.travaglini@arm.com    T45, T46, T47, NoneT, NoneT, NoneT> {
324013481Sgiacomo.travaglini@arm.com  typedef Templates47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
324113481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
324213481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
324313481Sgiacomo.travaglini@arm.com      T42, T43, T44, T45, T46, T47> type;
324413481Sgiacomo.travaglini@arm.com};
324513481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
324613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
324713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
324813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
324913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
325013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
325113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
325213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
325313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
325413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
325513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
325613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
325713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
325813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
325913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
326013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
326113481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
326213481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
326313481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
326413481Sgiacomo.travaglini@arm.com    T45, T46, T47, T48, NoneT, NoneT> {
326513481Sgiacomo.travaglini@arm.com  typedef Templates48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
326613481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
326713481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
326813481Sgiacomo.travaglini@arm.com      T42, T43, T44, T45, T46, T47, T48> type;
326913481Sgiacomo.travaglini@arm.com};
327013481Sgiacomo.travaglini@arm.comtemplate <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
327113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
327213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
327313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
327413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
327513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
327613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
327713481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
327813481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
327913481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
328013481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
328113481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
328213481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
328313481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
328413481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
328513481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
328613481Sgiacomo.travaglini@arm.com    GTEST_TEMPLATE_ T49>
328713481Sgiacomo.travaglini@arm.comstruct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
328813481Sgiacomo.travaglini@arm.com    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
328913481Sgiacomo.travaglini@arm.com    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
329013481Sgiacomo.travaglini@arm.com    T45, T46, T47, T48, T49, NoneT> {
329113481Sgiacomo.travaglini@arm.com  typedef Templates49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
329213481Sgiacomo.travaglini@arm.com      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
329313481Sgiacomo.travaglini@arm.com      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
329413481Sgiacomo.travaglini@arm.com      T42, T43, T44, T45, T46, T47, T48, T49> type;
329513481Sgiacomo.travaglini@arm.com};
329613481Sgiacomo.travaglini@arm.com
329713481Sgiacomo.travaglini@arm.com// The TypeList template makes it possible to use either a single type
329813481Sgiacomo.travaglini@arm.com// or a Types<...> list in TYPED_TEST_CASE() and
329913481Sgiacomo.travaglini@arm.com// INSTANTIATE_TYPED_TEST_CASE_P().
330013481Sgiacomo.travaglini@arm.com
330113481Sgiacomo.travaglini@arm.comtemplate <typename T>
330213481Sgiacomo.travaglini@arm.comstruct TypeList {
330313481Sgiacomo.travaglini@arm.com  typedef Types1<T> type;
330413481Sgiacomo.travaglini@arm.com};
330513481Sgiacomo.travaglini@arm.com
330613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5,
330713481Sgiacomo.travaglini@arm.com    typename T6, typename T7, typename T8, typename T9, typename T10,
330813481Sgiacomo.travaglini@arm.com    typename T11, typename T12, typename T13, typename T14, typename T15,
330913481Sgiacomo.travaglini@arm.com    typename T16, typename T17, typename T18, typename T19, typename T20,
331013481Sgiacomo.travaglini@arm.com    typename T21, typename T22, typename T23, typename T24, typename T25,
331113481Sgiacomo.travaglini@arm.com    typename T26, typename T27, typename T28, typename T29, typename T30,
331213481Sgiacomo.travaglini@arm.com    typename T31, typename T32, typename T33, typename T34, typename T35,
331313481Sgiacomo.travaglini@arm.com    typename T36, typename T37, typename T38, typename T39, typename T40,
331413481Sgiacomo.travaglini@arm.com    typename T41, typename T42, typename T43, typename T44, typename T45,
331513481Sgiacomo.travaglini@arm.com    typename T46, typename T47, typename T48, typename T49, typename T50>
331613481Sgiacomo.travaglini@arm.comstruct TypeList<Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
331713481Sgiacomo.travaglini@arm.com    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
331813481Sgiacomo.travaglini@arm.com    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
331913481Sgiacomo.travaglini@arm.com    T44, T45, T46, T47, T48, T49, T50> > {
332013481Sgiacomo.travaglini@arm.com  typedef typename Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
332113481Sgiacomo.travaglini@arm.com      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
332213481Sgiacomo.travaglini@arm.com      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
332313481Sgiacomo.travaglini@arm.com      T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>::type type;
332413481Sgiacomo.travaglini@arm.com};
332513481Sgiacomo.travaglini@arm.com
332613481Sgiacomo.travaglini@arm.com#endif  // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
332713481Sgiacomo.travaglini@arm.com
332813481Sgiacomo.travaglini@arm.com}  // namespace internal
332913481Sgiacomo.travaglini@arm.com}  // namespace testing
333013481Sgiacomo.travaglini@arm.com
333113481Sgiacomo.travaglini@arm.com#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
3332