$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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 :)