Boost logo

Boost :

From: Jonathan Turkanis (technews_at_[hidden])
Date: 2005-01-26 13:56:49


Sérgio Vale e Pace wrote:
> Jonathan Turkanis wrote:
>> Sérgio Pace wrote:

> great I was looking for some way of doing that. template
> metaprogramming rules!

It's not really template metaprogramming ... but I'm not really sure what to
call it. I guess "Modern C++ Design" :-)

> If I understood correctly you create a last
> choice overloaded operator<< that return tag and verify if check gets
> an ostrem or a tag is that correct?

I'd do it like this:

  #include < .... is_default_intertable.hpp>
  #include <boost/mpl/bool.hpp>

  template<typename ValueType>
  class holder : public placeholder {

    virtual void print(std::ostream& out) const
    {
       return print(out, is_default_insertable<ValueType>());
    }
    void print(std::ostream& out, mpl::true_) { out<<held; }
    void print(std::ostream& out, mpl::false_)
    {
        // handle non-streamable types. For instance:
        out<< "boost::any[" << typeid(ValueType).name() << "]";
    }

>> 2. You should probably support narrow and wide streams.
>
> good idea

>> I'm about to post an announcement for an interface library which can
>> be thought of as a generalization of Boost.Any. Very roughly, while
>> an instance of boost::any can be bound to any object (actually any
>> instance of a value type), an interface reference can be bound to
>> any object of a type which (non-intrusively) implements the
>> interface. Although I haven't implemented operator overloading yet,
>> use will be as follows:
>
> I am following the "BIL" discussion for a while now, and I´m looking
> forward to put my hands on it

Thanks. I'm surprised how many people have heard of it before I announced it
here.

Jonathan


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