
This might be off topic and purely esthetical (i.e. personal taste), but I find the mix of operator>>() and operator<<() in the same expression to be more than confusing. That's (for me) clearly not a viable solution.
I agree with you that the mix of i/o operators could be confusing. Maybe it could be less confusing if we write them as follows
std::string si2 = ii =>> std::uppercase =>> std::hex =>> via_stream() >> extract_to(*std::string*)();
If I'm not wrong =>> is left to right associative, so the preceding is equivalent to
(ii =>> (std::uppercase =>> (std::hex =>> via_stream()))) >> extract_to(*std::string*)();
Note that I'm not proposing to include this on Boost.Conversion.
FWIW, =>> is not a valid operator at all. Did you mean >>=? If yes, I don't think it will work as it has the wrong precedence. In any case, this kind of expressions scare me. They can't be understood without having a copy of the docs open all the time. Regards Hartmut --------------- http://boost-spirit.com