
Reece and fellow boosters, I have a special interest in Output Formatters working together with lexical_cast. The idea is this: Since lexical_cast internally uses a stringstream and its associated operators >> and <<, and since outfmt defines << and >> for STL containers, it should be possible to lexical_cast any STL container. Well, in theory. While it works for "output" operations like this std::vector<int> v; v.push_back( 7 ); v.push_back( 9 ); boost::lexical_cast<std::string>( v ); // gives "[ 7, 9 ]" the reverse "input" operation boost::lexical_cast< std::vector<int> >( "[ 7, 9 ]" ); // throws bad_lexical_cast fails. This is because lexical_stream turns off white space skipping, and outfmt uses "[ ", ", ", and " ]" (with all those nifty spaces) as default formatting. The problem is that I can't pass any formatting options to lexical_stream at runtime. Hence, I'd like to propose that a) either the default formatting of containers is changed to "[", ",", and "]", b) or a compile-time mechanism (macro? template magic?) should be provided to set the formatting. Ok, I just tested this lexical_cast-specific behaviour, thus I can't really answer most of the other questions:
1. What is your evaluation of the design? 2. What is your evaluation of the implementation? 3. What is your evaluation of the documentation? 4. What is your evaluation of the potential usefulness of the library?
Quite useful. Indeed, _very, very_ useful if the above-mentioned limitations were solved.
5. Did you try to use the library? With what compiler? Did you have any problems?
VC++ 7.0; see above.
6. How much effort did you put into your evaluation? A glance? A quick reading? In-depth study? 7. Are you knowledgeable about the problem domain?
And most important, 8. Do you think the library should be accepted as a Boost library?
Yes. - Roland PS: I noticed that in earlier versions strings within STL containers where surrounded by "quotes"; now, they are no longer, which causes problems if a string contains ",". Why was that changed?