Boost logo

Boost :

From: John Torjo (john.groups_at_[hidden])
Date: 2007-11-01 12:19:46


Hi all,

I know the Boost.Parameter allows advanced defaults when dealing with
templated parameters - for templated classes.
But shouldn't we have a simple interface, like this:

    struct default_ {};
    template<class param, class default_type> struct
use_default { typedef param type; };
    template<class default_type> struct use_default<default_,
default_type> { typedef default_type type; };

Example:

template<class formatter_base = default_, class destination_base =
default_, class f_ptr = default_, class d_ptr = default_ > struct logger {
  typedef use_default<formatter_base, formatter::base<> > ::type
formatter_type;
  typedef use_default<destination_base, destination::base<> > ::type
destination_type;
  typedef use_default<f_ptr, formatter_type* > f_ptr_type;
  typedef use_default<d_ptr, destination_type* > d_ptr_type;
  ...
};

This way, if can specify only the params I want, specifying "default_"
for the rest:

logger< some_formatter> l;
logger< default_, some_destination> l2;
logger< some_fmt, default_, shared_ptr<some_fmt> > l3;
...

Best,
John

-- 
http://John.Torjo.com -- C++ expert
... call me only if you want things done right

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