Boost logo

Boost Users :

Subject: Re: [Boost-users] [uuid] to string problem
From: Emil Dotchevski (emil_at_[hidden])
Date: 2010-05-12 14:38:21


On Wed, May 12, 2010 at 6:05 AM, Thorsten Ottosen <nesotto_at_[hidden]> wrote:
> Emil Dotchevski skrev:
>>
>> On Tue, May 11, 2010 at 6:00 AM, Andy Tompkins <atompkins_at_[hidden]>
>> wrote:
>>>
>>> Hmm, I haven't really given it much thought.  Since it doesn't need to
>>> be a member function, I would lean toward a standalone function.  Do
>>> any other libraries have a similar function?  I would likely create:
>>>
>>> template <typename C, typename T, typename A>
>>> std::basic_string<C, T, A> to_basic_string(boost::uuids::uuid const& u);
>>>
>>> as well as,
>>>
>>> std::string to_string(boost::uuids::uuid const& u);
>>> std::wstring to_wstring(boost::uuids::uuid conts& u);
>>
>> +1, unqualified call to to_string is how Boost Exception converts to
>> string arbitrary objects stored in exception objects. If you use this
>> form and someone adds a UUID to a boost::exception, it'll appear
>> correctly in the output from boost::diagnostic_information.
>
> -1
>
> a to_string() member is IMO much preferred for simplicity and the
> encapsulation perspective.

A member function is incompatible with built-in types, so the question
is how would you convert an int to string?

> There seem to be no standard in Boost for this :-(, e.g. filesystem uses
> ::string(), format uses ::str().

This is another example why a member function is not practical, you
can't have all 3rd-party types in the world agree on the name of a
member function. However, you can provide a namespace-scope function
overload for any type.

Emil Dotchevski
Reverge Studios, Inc.
http://www.revergestudios.com/reblog/index.php?n=ReCode


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net