diff --git a/include/boost/lexical_cast.hpp b/include/boost/lexical_cast.hpp index e721882..acfc3e8 100644 --- a/include/boost/lexical_cast.hpp +++ b/include/boost/lexical_cast.hpp @@ -2077,8 +2077,9 @@ namespace boost { static inline Target lexical_cast_impl(const Source& arg) { typedef BOOST_DEDUCED_TYPENAME detail::array_to_pointer_decay::type src; + typedef BOOST_DEDUCED_TYPENAME ::boost::remove_cv::type no_cv_src; typedef BOOST_DEDUCED_TYPENAME detail::stream_char::type target_char_t; - typedef BOOST_DEDUCED_TYPENAME detail::stream_char::type src_char_type; + typedef BOOST_DEDUCED_TYPENAME detail::stream_char::type src_char_type; typedef BOOST_DEDUCED_TYPENAME detail::widest_char< target_char_t, src_char_type >::type char_type; @@ -2095,7 +2096,7 @@ namespace boost { #endif typedef BOOST_DEDUCED_TYPENAME ::boost::detail::deduce_char_traits< - char_type, Target, Source + char_type, Target, no_cv_src >::type traits; typedef ::boost::type_traits::ice_and< @@ -2106,8 +2107,8 @@ namespace boost { > is_string_widening_required_t; typedef ::boost::type_traits::ice_or< - ::boost::is_integral::value, - ::boost::detail::is_this_float_conversion_optimized::value, + ::boost::is_integral::value, + ::boost::detail::is_this_float_conversion_optimized::value, ::boost::detail::is_char_or_wchar::value > is_source_input_optimized_t; @@ -2123,7 +2124,7 @@ namespace boost { typedef detail::lexical_stream_limited_src interpreter_type; - typedef detail::lcast_src_length lcast_src_length; + typedef detail::lcast_src_length lcast_src_length; std::size_t const src_len = lcast_src_length::value; char_type buf[src_len + 1]; lcast_src_length::check_coverage();