id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 10102,dynamic_properties inconsistent usage of lexical_cast and stringstream,Sergey Mitsyn ,Jeremiah Willcock,"Hello, The {{{boost::dynamic_properties}}} is inconsistent with usage of {{{boost::lexical_cast}}} and {{{std::stringstream}}}. In file boost\property_map\dynamic_property_map.hpp, the function {{{ template inline Value read_value(const std::string& value) }}} uses {{{boost::lexical_cast}}}, while {{{ std::string dynamic_property_map_adaptor::get_string(const any& key) }}} uses {{{std::stringstream}}}. It is a problem, for example, if used together with a BGL's {{{boost::write_graphvis_dp}}} and {{{boost::read_graphvis}}} if {{{NaN}}} attribute values are written and read. With {{{std::stringstream}}} on my machine (Windows 7 + MSVC 12), NaN's are written as {{{""1.#QNAN""}}}, and lexical_cast produces and consumes {{{nan}}} and {{{NAN}}} [1]. In such case {{{boost::bad_lexical_cast}}} is thrown whenever read_graphvis is called for graphviz file containing {{{NaN}}}s. Modifying {{{dynamic_property_map_adaptor::get_string}}} to use boost::lexical_cast seems to fix the issue with graph reading/writing. Though I'm not trying to use such files as an input for graphviz. Speaking about graphviz, docs seem not to define any restrictions on attribute values, and I haven't looked at the source code. Quick googling gave me [http:/_/comments.gmane.org/gmane.comp.video.graphviz/7062], which is not related to this case, but it is stated there that graphviz uses {{{atof()}}}, which is locale-dependent and feels messy. [1] see boost/lexical_cast.hpp, function {{{ template bool parse_inf_nan(const CharT* begin, const CharT* end, T& value) }}} ",Bugs,new,To Be Determined,graph,Boost 1.55.0,Problem,,,