Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2005-03-09 20:20:41


"Peter Dimov" <pdimov_at_[hidden]> writes:

> David Abrahams wrote:
>> "Peter Dimov" <pdimov_at_[hidden]> writes:
>>
>>> David Abrahams wrote:
>>>> If you want to be unambiguous, it has to be more like:
>>>>
>>>> [hello] <- a non-empty optional<std::string>
>>>> [] <- a non-empty optional<std::string> (the string is
>>>> empty) _ <- an empty optional<T>
>>>
>>> My preference is
>>>
>>> hello
>>>
>>> _
>>>
>>> A string can never be output "correctly", no matter what the
>>> delimiters are ("a] [b").
>>
>> I disagree. You can generate escapes:
>>
>> [a\] \[b]
>>
>> or if you like,
>>
>> [a\]\ \[b]
>
> I should have been more clear. You shouldn't attempt to fix the output of a
> std::string in optional<>'s operator<<. The proper way to make a std::string
> bi-directional is by defining appropriate operator<< and operator>>
> overloads for std::string. As these operators are already defined and are
> not bi-directional in the general case, optional<std::string> should not
> attempt to provide extra bi-directionality.

Okay, I don't neccessarily disagree, but I don't agree yet either.
Why?

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

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