There has been some discussion about a minor improvement to lexical_cast to ensure that a loopback test like:
any_type any_value == lexical_cast<T>(lexical_cast<string>(any_value)) is always true The following replacement for the original code (using digits10+1) works for specialised radix 2 types: if(std::numeric_limits<Target>::is_specialized && std::numeric_limits<Target>::radix == 2) { stream.precision(2 + std::numeric_limits<Target>::digits * 301/1000); } else if(std::numeric_limits<Source>::is_specialized && std::numeric_limits<Source>::radix == 2) { stream.precision(2 + std::numeric_limits<Source>::digits * 301/1000); } As in the current version, for other types the default precision is used, and you may not get what you expect. I think this is OK, but one could throw an exception. I propose a comment instead // Warning: else the default stream precision (usually 6) will be used, // which may not be enough significant decimal digits to avoid losing precision, // for example in a loopback test like // some_type any_value == lexical_cast<T>(lexical_cast<string>(any_value)); If there are no objections, can someone with sufficient authority patch lexical_cast.hpp? Paul Paul A Bristow, Prizet Farmhouse, Kendal, Cumbria, LA8 8AB UK +44 1539 561830 Mobile +44 7714 33 02 04 mailto:[EMAIL PROTECTED] _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost