36 #ifndef VIGRA_TUPLE_HXX
37 #define VIGRA_TUPLE_HXX
104 template <
class T1,
class T2,
class T3>
106 typedef T1 first_type;
107 typedef T2 second_type;
108 typedef T3 third_type;
114 triple(
const T1& a,
const T2& b,
const T3& c)
115 : first(a), second(b), third(c) {}
118 template <
class T1,
class T2,
class T3>
119 triple<T1,T2,T3> make_triple( T1 t1, T2 t2, T3 t3 )
120 {
return triple<T1,T2,T3>( t1, t2, t3 ); }
128 template <
class T1,
class T2,
class T3,
class T4>
130 typedef T1 first_type;
131 typedef T2 second_type;
132 typedef T3 third_type;
133 typedef T4 fourth_type;
140 tuple4(
const T1& a,
const T2& b,
const T3& c,
const T4& d)
141 : first(a), second(b), third(c), fourth(d) {}
144 template <
class T1,
class T2,
class T3,
class T4>
145 tuple4<T1,T2,T3,T4> make_tuple4( T1 t1, T2 t2, T3 t3, T4 t4 )
146 {
return tuple4<T1,T2,T3,T4>( t1, t2, t3, t4 ); }
154 template <
class T1,
class T2,
class T3,
class T4,
class T5>
156 typedef T1 first_type;
157 typedef T2 second_type;
158 typedef T3 third_type;
159 typedef T4 fourth_type;
160 typedef T5 fifth_type;
168 tuple5(
const T1& a,
const T2& b,
const T3& c,
const T4& d,
const T5& e)
169 : first(a), second(b), third(c), fourth(d), fifth(e) {}
172 template <
class T1,
class T2,
class T3,
class T4,
class T5>
173 tuple5<T1,T2,T3,T4,T5> make_tuple5( T1 t1, T2 t2, T3 t3, T4 t4, T5 t5 )
174 {
return tuple5<T1,T2,T3,T4,T5>( t1, t2, t3, t4, t5 ); }