|
Boost : |
Subject: Re: [boost] Formal Review Request: Boost.Convert
From: Emil Dotchevski (emildotchevski_at_[hidden])
Date: 2009-02-27 14:05:42
On Fri, Feb 27, 2009 at 10:52 AM, Stewart, Robert
<Robert.Stewart_at_[hidden]> wrote:
> On Friday, February 27, 2009 1:48 PM
> Emil Dotchevski wrote:
>> On Fri, Feb 27, 2009 at 5:30 AM, Stewart, Robert
>> <Robert.Stewart_at_[hidden]> wrote:
>> >
>> > The framework uses IOStreams to do its work. I believe the
>> > conversion functionality for the uuid type is captured via:
>> >
>> > namespace user
>> > {
>> > class uuid;
>> >
>> > template <class Stream>
>> > Stream &
>> > operator <<(Stream &, uuid const &);
>> > }
>>
>> If operator<< was a reasonable to-string alternative, we wouldn't be
>> needing a library for it.
>
> That is the purpose of the insertion operator: it produces a character sequence from the right hand argument.
No, its purpose is to implement dumping of objects in streams, in
terms of other existing operator<< overloads. This can also be used to
convert to string, but the streams framework is rather clumsy to use
when you need a std::string.
>> It is relevant, of course, and the framework should be able to
>> automatically bind suitable operator<< overloads if they exist. It
>> should also provide a generic operator<< overload that calls convert,
>> so all types that integrate in the convert framework are automatically
>> compatible with streams.
>
> The library's convert() should use a provided operator <<() when available and the library should provide an operator <<() that uses a provided convert() when available? How will that work?
The former requires a bit more template kungfu but isn't a problem.
The latter is easy, well, sort of, you need to use the correct target
type for convert, but you get the idea:
template <class Stream,class T>
Stream & operator<<( Stream & s, T const & x )
{
return s << convert<std::string>(x);
}
Emil Dotchevski
Reverge Studios, Inc.
http://www.revergestudios.com/reblog/index.php?n=ReCode
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk