summaryrefslogtreecommitdiff
path: root/boost/geometry/srs/projections/impl/dms_parser.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/geometry/srs/projections/impl/dms_parser.hpp')
-rw-r--r--boost/geometry/srs/projections/impl/dms_parser.hpp24
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();