Boost logo

Boost :

From: Emily Winch (emily_at_[hidden])
Date: 2001-11-26 11:55:00


> Have you considered using std::pair as the 'dot pair' type? It doesn't
> really matter which template is used as long as it has two
> type parameters -
> it doesn't even need a definition. std::pair is handy since
> it automatically
> maps a value list (a tuple) to a typelist.

[ two people made the point that typelists should be instantiable ]

how about something like (off the top of my head)

template<typename Head, typename Tail> class dummy_pair_without_storage{
  // typedefs as per boost::compressed_pair
};

template<template<class, class> class PairType, typename Head, typename
Tail>
class tuply_thing : public PairType<Head, Tail>{ // ok, a better name would
be good
  typedef PairType< Head, Tail > base;
public:
  typedef typename base::first_type head_type;
  typedef typename base::second_type tail_type;
  // etc. etc.
  // constructors too
};

template<typename Head, typename Tail>
class typelist : public tuply_thing<dummy_pair_without_storage, Head,
Tail>{};

template<typename Head, typename Tail>
class tuple : public tuply_thing<boost::compressed_pair, Head, Tail>{};

Emily

PS car and cdr would be fine by me :)


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk