diff options
Diffstat (limited to 'boost/geometry/srs/projections/impl/dms_parser.hpp')
-rw-r--r-- | boost/geometry/srs/projections/impl/dms_parser.hpp | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/boost/geometry/srs/projections/impl/dms_parser.hpp b/boost/geometry/srs/projections/impl/dms_parser.hpp index bbecc9b1a2..21e87d1f67 100644 --- a/boost/geometry/srs/projections/impl/dms_parser.hpp +++ b/boost/geometry/srs/projections/impl/dms_parser.hpp @@ -41,18 +41,12 @@ #include <string> -#include <boost/static_assert.hpp> - -#if !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) -#include <boost/lexical_cast.hpp> -#endif // !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) - #include <boost/algorithm/string.hpp> - #include <boost/config.hpp> +#include <boost/static_assert.hpp> #include <boost/geometry/core/cs.hpp> - +#include <boost/geometry/srs/projections/str_cast.hpp> #include <boost/geometry/util/math.hpp> namespace boost { namespace geometry { namespace projections @@ -129,27 +123,23 @@ struct dms_parser bool has_dms[3]; dms_value() -#ifndef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) && (!defined(_MSC_VER) || (_MSC_VER >= 1900)) // workaround for VC++ 12 (aka 2013) : dms{0, 0, 0} , has_dms{false, false, false} -#endif + {} +#else { -#ifdef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX std::fill(dms, dms + 3, T(0)); std::fill(has_dms, has_dms + 3, false); -#endif } +#endif }; template <size_t I> static inline void assign_dms(dms_value& dms, std::string& value, bool& has_value) { -#if !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) - dms.dms[I] = boost::lexical_cast<T>(value.c_str()); -#else // !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) - dms.dms[I] = std::atof(value.c_str()); -#endif // !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) + dms.dms[I] = geometry::str_cast<T>(value); dms.has_dms[I] = true; has_value = false; value.clear(); |