forked from boostorg/tuple
added new constructor for cons lists
[SVN r10927]
This commit is contained in:
@ -45,8 +45,8 @@ namespace tuples {
|
|||||||
} // end detail
|
} // end detail
|
||||||
|
|
||||||
// - cons forward declaration -----------------------------------------------
|
// - cons forward declaration -----------------------------------------------
|
||||||
template <class HT, class TT>
|
template <class HT, class TT> struct cons;
|
||||||
struct cons;
|
|
||||||
|
|
||||||
// - tuple forward declaration -----------------------------------------------
|
// - tuple forward declaration -----------------------------------------------
|
||||||
template <
|
template <
|
||||||
@ -214,17 +214,29 @@ struct cons {
|
|||||||
head_type head;
|
head_type head;
|
||||||
tail_type tail;
|
tail_type tail;
|
||||||
|
|
||||||
typename tuple_access_traits<head_type>::non_const_type get_head() { return head; }
|
typename tuple_access_traits<head_type>::non_const_type
|
||||||
typename tuple_access_traits<tail_type>::non_const_type get_tail() { return tail; }
|
get_head() { return head; }
|
||||||
|
|
||||||
typename tuple_access_traits<head_type>::const_type get_head() const { return head; }
|
typename tuple_access_traits<tail_type>::non_const_type
|
||||||
typename tuple_access_traits<tail_type>::const_type get_tail() const { return tail; }
|
get_tail() { return tail; }
|
||||||
|
|
||||||
|
typename tuple_access_traits<head_type>::const_type
|
||||||
|
get_head() const { return head; }
|
||||||
|
|
||||||
|
typename tuple_access_traits<tail_type>::const_type
|
||||||
|
get_tail() const { return tail; }
|
||||||
|
|
||||||
|
cons(typename tuple_access_traits<head_type>::parameter_type h,
|
||||||
|
const tail_type& t)
|
||||||
|
: head (h), tail(t) {}
|
||||||
|
|
||||||
template <class T1, class T2, class T3, class T4, class T5,
|
template <class T1, class T2, class T3, class T4, class T5,
|
||||||
class T6, class T7, class T8, class T9, class T10>
|
class T6, class T7, class T8, class T9, class T10>
|
||||||
cons( T1& t1, T2& t2, T3& t3, T4& t4, T5& t5,
|
cons( T1& t1, T2& t2, T3& t3, T4& t4, T5& t5,
|
||||||
T6& t6, T7& t7, T8& t8, T9& t9, T10& t10 )
|
T6& t6, T7& t7, T8& t8, T9& t9, T10& t10 )
|
||||||
: head (t1) , tail (t2, t3, t4, t5, t6, t7, t8, t9, t10, detail::tuples::cnull_type()) {}
|
: head (t1),
|
||||||
|
tail (t2, t3, t4, t5, t6, t7, t8, t9, t10, detail::tuples::cnull_type())
|
||||||
|
{}
|
||||||
|
|
||||||
template <class HT2, class TT2>
|
template <class HT2, class TT2>
|
||||||
cons( const cons<HT2, TT2>& u ) : head(u.head), tail(u.tail) {}
|
cons( const cons<HT2, TT2>& u ) : head(u.head), tail(u.tail) {}
|
||||||
@ -272,22 +284,32 @@ struct cons<HT, null_type> {
|
|||||||
|
|
||||||
head_type head;
|
head_type head;
|
||||||
|
|
||||||
typename tuple_access_traits<head_type>::non_const_type get_head() { return head; }
|
typename tuple_access_traits<head_type>::non_const_type
|
||||||
|
get_head() { return head; }
|
||||||
|
|
||||||
null_type get_tail() { return null_type(); }
|
null_type get_tail() { return null_type(); }
|
||||||
|
|
||||||
typename tuple_access_traits<head_type>::const_type get_head() const { return head; }
|
typename tuple_access_traits<head_type>::const_type
|
||||||
|
get_head() const { return head; }
|
||||||
|
|
||||||
const null_type get_tail() const { return null_type(); }
|
const null_type get_tail() const { return null_type(); }
|
||||||
|
|
||||||
|
cons(typename tuple_access_traits<head_type>::parameter_type h,
|
||||||
|
const null_type& = null_type())
|
||||||
|
: head (h) {}
|
||||||
|
|
||||||
template<class T1>
|
template<class T1>
|
||||||
cons( T1& t1, const null_type&, const null_type&, const null_type&, const null_type&,
|
cons(T1& t1, const null_type&, const null_type&, const null_type&,
|
||||||
const null_type&, const null_type&, const null_type&, const null_type&, const null_type&)
|
const null_type&, const null_type&, const null_type&,
|
||||||
|
const null_type&, const null_type&, const null_type&)
|
||||||
: head (t1) {}
|
: head (t1) {}
|
||||||
|
|
||||||
template <class HT2>
|
template <class HT2>
|
||||||
cons( const cons<HT2, null_type>& u ) : head(u.head) {}
|
cons( const cons<HT2, null_type>& u ) : head(u.head) {}
|
||||||
|
|
||||||
template <class HT2>
|
template <class HT2>
|
||||||
cons& operator=(const cons<HT2, null_type>& u ) { head = u.head; return *this; }
|
cons& operator=(const cons<HT2, null_type>& u )
|
||||||
|
{ head = u.head; return *this; }
|
||||||
|
|
||||||
// must define assignment operator explicitely, implicit version
|
// must define assignment operator explicitely, implicit version
|
||||||
// is illformed if HT is a reference
|
// is illformed if HT is a reference
|
||||||
|
Reference in New Issue
Block a user