$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] Formal Review Request: Boost.String.Convert
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2009-02-18 16:03:41
Emil Dotchevski wrote:
> What I had in mind is that foo could implement to_string or to_wstring
> or both, and the library would supply generic overloads of
> to_string/to_wstring that would kick-in as needed. So, if I give you:
>
> std::string to_string( foo const & );
>
> then after you include foo.hpp and presumably boost/to_string.hpp, you can say
>
> foo x;
> std::wstring s=to_wstring(x);
>
> which would bind to boost::to_wstring (since there isn't a foo
> overload of to_wstring) which would do the conversion using the foo
> to_string overload.
Hmm... No, that doesn't look very useful either. My common practice of
operator<< definition is to define it as a template on the character
type, like this:
struct foo
{
template< typename CharT, typename TraitsT >
friend std::basic_ostream< CharT, TraitsT >&
operator<< (
std::basic_ostream< CharT, TraitsT >& strm,
foo const& x);
};
This allows to find the operator via ADL and have the common
implementation for any character type under the same name (operator<< in
this case).
I would expect the same level of flexibility from the proposed library.
Even more, I'd like it to use the operators if they are already defined
for the class.