Boost logo

Boost :

From: Darren Cook (darren_at_[hidden])
Date: 2004-08-24 18:10:06


>>So, what I want is something to say insert a carriage-return before
>> calling operator<<, e.g.
>> SMART_ASSERT( this==that )(prefix_cr(brd))(this)(that);
>
> Why not something like:
> ...

Thanks! That worked.

> Is there a more general version of the problem?

I don't know - I cannot remember needing to prefix anything other than a
carriage-return.

I need to indent a 2d output sometimes (e.g. in trace logs to show the depth
of recursion) but that requires a prefix to each line so is a different kind
of problem.

Darren

---------------------------------------
template<typename T>
struct cr_prefixed {
     cr_prefixed(T& t) : t(t) { }
     void print(std::ostream& out) const
     {
         out << "\n" << t;
     }
     T& t;
};

template<typename T>
std::ostream& operator<<(std::ostream& out, const cr_prefixed<T>& p)
{
     p.print(out);
     return out;
}

template<typename T>
cr_prefixed<T> prefix_cr(T& t) { return cr_prefixed<T>(t); }


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