
"Peter Dimov" <pdimov@mmltd.net> writes:
David Abrahams wrote:
"Peter Dimov" <pdimov@mmltd.net> 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