143template <
typename T1,
typename T2>
146template <
typename T1,
typename T2>
150template <
typename T1,
typename T2>
161 UbDuo(T1
const &a, T2
const &
b) : value1(a), value2(
b) {}
164 template <
typename U1,
typename U2>
170 template <
typename U1,
typename U2>
179 T1 &
v1() {
return value1; }
180 T1
const &
v1()
const {
return value1; }
182 T2 &
v2() {
return value2; }
183 T2
const &
v2()
const {
return value2; }
191template <
typename T1,
typename T2,
typename U1,
typename U2>
194 return d1.v1() ==
d2.v1() &&
d1.v2() ==
d2.v2();
197template <
typename T1,
typename T2,
typename U1,
typename U2>
203template <
typename T1,
typename T2,
typename U1,
typename U2>
206 if (
d1.v1() <
d2.v1())
208 else if (
d1.v1() ==
d2.v1())
209 return d1.v2() <
d2.v2();
214template <
typename T1,
typename T2>
217 os <<
d1.v1() <<
", " <<
d1.v2();
222template <
typename T1,
typename T2>
229template <
typename A,
typename B,
typename C>
243 template <
typename U1,
typename U2>
249 template <
typename U1,
typename U2>
259 T1 const &
v1()
const {
return value1; }
262 T2 const &
v2()
const {
return value2; }
271template <
int N,
typename T>
279template <
typename A,
typename B>
287template <
typename A,
typename B>
295template <
int N,
typename A,
typename B,
typename C>
303template <
typename A,
typename B,
typename C>
311template <
typename A,
typename B,
typename C>
320template <
int N,
typename T>
329template <
typename A,
typename B>
338template <
typename A,
typename B>
347template <
int N,
typename A,
typename B,
typename C>
361template <
typename A,
typename B,
typename C>
370template <
typename A,
typename B,
typename C>
380template <
int N,
typename A,
typename B>
387template <
int N,
typename A,
typename B>
412 T1 const &
v1()
const {
return value1; }
464class UbTuple :
public UbDuo<P1, typename UbTuple<P2, P3, P4, P5, P6, P7, P8, UbNullT>::BaseT>
475 :
BaseT(
a1,
UbTuple<
P2,
P3,
P4,
P5,
P6,
P7,
P8,
UbNullT>(
a2,
a3,
a4,
a5,
a6,
a7,
a8))
480 template <
typename U1,
typename U2,
typename U3,
typename U4,
typename U5,
typename U6,
typename U7,
typename U8>
481 UbTuple<P1, P2, P3, P4, P5, P6, P7, P8> &
operator=(
const UbTuple<U1, U2, U3, U4, U5, U6, U7, U8> &
rhs)
489template <
typename P1,
typename P2>
506 template <
typename U1,
typename U2>
515template <
typename P1>
532 template <
typename U1>
535 this->
v1() = rhs.
v1();
541template <
typename T1>
548template <
typename T1,
typename T2>
555template <
typename T1,
typename T2,
typename T3>
562template <
typename T1,
typename T2,
typename T3,
typename T4>
569template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
576template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
577inline UbTuple<T1, T2, T3, T4, T5, T6> makeUbTuple(T1
const &
a1, T2
const &
a2,
T3 const &
a3,
T4 const &
a4,
T5 const &
a5,
580 return UbTuple<T1, T2, T3, T4, T5, T6>(
a1,
a2,
a3,
a4,
a5,
a6);
584template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
585inline UbTuple<T1, T2, T3, T4, T5, T6, T7> makeUbTuple(T1
const &
a1, T2
const &
a2,
T3 const &
a3,
T4 const &
a4,
588 return UbTuple<T1, T2, T3, T4, T5, T6, T7>(
a1,
a2,
a3,
a4,
a5,
a6,
a7);
592template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
593inline UbTuple<T1, T2, T3, T4, T5, T6, T7, T8> makeUbTuple(T1
const &
a1, T2
const &
a2,
T3 const &
a3,
T4 const &
a4,
596 return UbTuple<T1, T2, T3, T4, T5, T6, T7, T8>(
a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8);
603 return UbTuple<T, T, T, T, T, T, T, T>(
array[0],
array[1],
array[2],
array[3],
array[4],
array[5],
array[6],
array[7]);
620 unsigned int,
unsigned int>;
static A const & get(UbDuo< A, B > const &d)
static A & get(UbDuo< A, B > &d)
static A & get(UbDuo< A, UbDuo< B, C > > &d)
static A const & get(UbDuo< A, UbDuo< B, C > > const &d)
static B & get(UbDuo< A, B > &d)
static B const & get(UbDuo< A, B > const &d)
static B const & get(UbDuo< A, UbDuo< B, C > > const &d)
static B & get(UbDuo< A, UbDuo< B, C > > &d)
static void get(T const &)
UbDuo(T1 const &a, T2 const &b)
UbDuo(UbDuo< U1, U2 > const &d)
UbDuo< T1, T2 > & operator=(UbDuo< U1, U2 > const &d)
UbDuo< T1, T2 > & operator=(UbDuo< U1, U2 > const &d)
UbDuo(UbDuo< U1, U2 > const &d)
UbDuo(T1 const &a, T2 const &b)
typename UbDuoT< N - 1, UbDuo< B, C > >::ResultT ResultT
UbTuple< P1, P2 > & operator=(const UbTuple< U1, U2 > &rhs)
UbTuple(typename UbTypeOp< P1 >::RefConstT a1, typename UbTypeOp< P2 >::RefConstT a2, typename UbTypeOp< UbNullT >::RefConstT=UbNullT(), typename UbTypeOp< UbNullT >::RefConstT=UbNullT(), typename UbTypeOp< UbNullT >::RefConstT=UbNullT(), typename UbTypeOp< UbNullT >::RefConstT=UbNullT(), typename UbTypeOp< UbNullT >::RefConstT=UbNullT(), typename UbTypeOp< UbNullT >::RefConstT=UbNullT())
UbTuple(typename UbTypeOp< P1 >::RefConstT a1, typename UbTypeOp< UbNullT >::RefConstT=UbNullT(), typename UbTypeOp< UbNullT >::RefConstT=UbNullT(), typename UbTypeOp< UbNullT >::RefConstT=UbNullT(), typename UbTypeOp< UbNullT >::RefConstT=UbNullT(), typename UbTypeOp< UbNullT >::RefConstT=UbNullT(), typename UbTypeOp< UbNullT >::RefConstT=UbNullT(), typename UbTypeOp< UbNullT >::RefConstT=UbNullT())
UbTuple< P1 > & operator=(const UbTuple< U1 > &rhs)
A class implements a tuple.
UbTuple< P1, P2, P3, P4, P5, P6, P7, P8 > & operator=(const UbTuple< U1, U2, U3, U4, U5, U6, U7, U8 > &rhs)
UbDuo< P1, typename UbTuple< P2, P3, P4, P5, P6, P7, P8, UbNullT >::BaseT > BaseT
UbTuple(typename UbTypeOp< P1 >::RefConstT a1, typename UbTypeOp< P2 >::RefConstT a2, typename UbTypeOp< P3 >::RefConstT a3=UbNullT(), typename UbTypeOp< P4 >::RefConstT a4=UbNullT(), typename UbTypeOp< P5 >::RefConstT a5=UbNullT(), typename UbTypeOp< P6 >::RefConstT a6=UbNullT(), typename UbTypeOp< P7 >::RefConstT a7=UbNullT(), typename UbTypeOp< P8 >::RefConstT a8=UbNullT())
typename UbTypeOp< T >::BareT BareT
typename UbTypeOp< T >::BareT & RefBareT
A class implements a tuple.
std::shared_ptr< T > SPtr
bool operator!=(UbDuo< T1, T2 > const &d1, UbDuo< U1, U2 > const &d2)
UbTuple< bool, bool, bool > UbTupleBool3
bool operator<(UbDuo< T1, T2 > const &d1, UbDuo< U1, U2 > const &d2)
UbTypeOp< typenameUbDuoT< N, UbDuo< A, B > >::ResultT >::RefT val(UbDuo< A, B > &d)
UbTuple< short, short, short, short > UbTupleShort4
UbTuple< T, T, T, T, T, T, T, T > makeUbTupleFromArray(const std::array< T, 8 > &array)
UbTuple< std::string, int, int, int > UbTupleStringInt3
UbTuple< float, float, float, float > UbTupleFloat4
UbTuple< double, double, double, double, double, double > UbTupleDouble6
bool operator==(UbDuo< T1, T2 > const &d1, UbDuo< U1, U2 > const &d2)
UbTuple< int, int, int, int, int, int > UbTupleInt6
UbTuple< std::string, double, double > UbTupleStringDouble2
UbTuple< int, int, int, int, int > UbTupleInt5
UbTuple< double, double, double, double > UbTupleDouble4
UbDuo< T1, T2 > makeUbDuo(T1 const &a, T2 const &b)
UbTuple< T1 > makeUbTuple(T1 const &a1)
UbTuple< float, float, float, float, float, float > UbTupleFloat6
UbTuple< double, double > UbTupleDouble2
std::ostream & operator<<(std::ostream &os, UbDuo< T1, T2 > const &d1)
UbTuple< int, bool > UbTupleIntBool
UbTuple< int, double, double > UbTupleIntDouble2
UbTuple< std::string, double, double, double > UbTupleStringDouble3
static UbTypeOp< typenameUbDuoT< N-1, UbDuo< B, C > >::ResultT >::RefConstT get(UbDuo< A, UbDuo< B, C > > const &d)
static UbTypeOp< typenameUbDuoT< N-1, UbDuo< B, C > >::ResultT >::RefT get(UbDuo< A, UbDuo< B, C > > &d)