diff --git a/3party/osrm/osrm-backend/ThirdParty/variant/recursive_wrapper.hpp b/3party/osrm/osrm-backend/ThirdParty/variant/recursive_wrapper.hpp index 54b27634a3..c8f88d1505 100644 --- a/3party/osrm/osrm-backend/ThirdParty/variant/recursive_wrapper.hpp +++ b/3party/osrm/osrm-backend/ThirdParty/variant/recursive_wrapper.hpp @@ -2,6 +2,7 @@ #define MAPBOX_UTIL_VARIANT_RECURSIVE_WRAPPER_HPP #include +#include "../../../../../std/noexcept.hpp" namespace mapbox { namespace util { @@ -42,7 +43,7 @@ public: return *this; } - inline void swap(recursive_wrapper& operand) noexcept + inline void swap(recursive_wrapper& operand) NOEXCEPT_MODIFIER { T* temp = operand.p_; operand.p_ = p_; @@ -50,7 +51,7 @@ public: } - recursive_wrapper& operator=(recursive_wrapper&& rhs) noexcept + recursive_wrapper& operator=(recursive_wrapper&& rhs) NOEXCEPT_MODIFIER { swap(rhs); return *this; @@ -117,7 +118,7 @@ void recursive_wrapper::assign(const T& rhs) } template -inline void swap(recursive_wrapper& lhs, recursive_wrapper& rhs) noexcept +inline void swap(recursive_wrapper& lhs, recursive_wrapper& rhs) NOEXCEPT_MODIFIER { lhs.swap(rhs); } diff --git a/3party/osrm/osrm-backend/ThirdParty/variant/variant.hpp b/3party/osrm/osrm-backend/ThirdParty/variant/variant.hpp index 3b5659425a..4e3eee6e16 100644 --- a/3party/osrm/osrm-backend/ThirdParty/variant/variant.hpp +++ b/3party/osrm/osrm-backend/ThirdParty/variant/variant.hpp @@ -12,6 +12,8 @@ #include "recursive_wrapper.hpp" +#include "../../../../../std/noexcept.hpp" + #ifdef _MSC_VER // http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx #ifdef NDEBUG @@ -451,7 +453,7 @@ template class comparer : public static_visitor { public: - explicit comparer(Variant const& lhs) noexcept + explicit comparer(Variant const& lhs) NOEXCEPT_MODIFIER : lhs_(lhs) {} comparer& operator=(comparer const&) = delete; // visitor @@ -517,7 +519,7 @@ public: // http://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers template ::type, Types...>::value>::type> - VARIANT_INLINE variant(T && val) noexcept + VARIANT_INLINE variant(T && val) NOEXCEPT_MODIFIER : type_index(detail::value_traits::type, Types...>::index) { constexpr std::size_t index = sizeof...(Types) - detail::value_traits::type, Types...>::index - 1; @@ -531,7 +533,7 @@ public: helper_type::copy(old.type_index, &old.data, &data); } - VARIANT_INLINE variant(variant&& old) noexcept + VARIANT_INLINE variant(variant&& old) NOEXCEPT_MODIFIER : type_index(old.type_index) { helper_type::move(old.type_index, &old.data, &data); @@ -553,7 +555,7 @@ public: // conversions // move-assign template - VARIANT_INLINE variant& operator=(T && rhs) noexcept + VARIANT_INLINE variant& operator=(T && rhs) NOEXCEPT_MODIFIER { variant temp(std::forward(rhs)); swap(*this, temp); @@ -655,7 +657,7 @@ public: return detail::binary_dispatcher::apply(v0, v1, f); } - ~variant() noexcept + ~variant() NOEXCEPT_MODIFIER { helper_type::destroy(type_index, &data); } diff --git a/std/noexcept.hpp b/std/noexcept.hpp new file mode 100644 index 0000000000..99ae2fc068 --- /dev/null +++ b/std/noexcept.hpp @@ -0,0 +1,7 @@ +#pragma once + +#if defined(_MSC_VER) && (_MSC_VER <= 1800) + #define NOEXCEPT_MODIFIER +#else + #define NOEXCEPT_MODIFIER noexcept +#endif