Boost logo

Boost :

From: Alexander Nasonov (alnsn_at_[hidden])
Date: 2002-09-04 04:25:44

The boost::function cannot be used in 'any' because it has arguments of
fixed type. What we need here is function_template:

  template<int Id>
  struct template_param;

  template<typename Return, typename Arg1, typename Arg2, class Functor>
  struct function_template;

  struct ostream_inserter
    template<typename Arg1, typename Arg2>
    Arg1 operator()(Arg1 os, Arg2 val)
      os << val;
      return os;

  typedef template_param<0> _T;
  typedef function_template<ostream &, ostream &, _T,
    ostream_inserter> ostream_inserter_template;

  function<ostream &, ostream &, char> f =
    ostream_inserter_template::bind<_T, char>();

  f(cout, '!') << endl;

Or, if used with 'any':

  any<ostream_inserter_template> a = '!';<ostream_inserter_template>(cout) << endl;

Best regards,
Alexander Nasonov
e-mail account: alnsn
e-mail server:

Boost list run by bdawes at, gregod at, cpdaniel at, john at