diff --git a/include/boost/config/platform/win32.hpp b/include/boost/config/platform/win32.hpp index 6ca504bb..cd9ea0d3 100644 --- a/include/boost/config/platform/win32.hpp +++ b/include/boost/config/platform/win32.hpp @@ -50,3 +50,29 @@ #ifndef NOMINMAX # define NOMINMAX #endif + +#ifdef BOOST_MSVC +namespace std{ + // Apparently, something in the Microsoft libraries requires the "long" + // overload, because it calls the min/max functions with arguments of + // slightly different type. (If this proves to be incorrect, this + // whole "BOOST_MSVC" section can be removed.) + inline long min(long __a, long __b) { + return __b < __a ? __b : __a; + } + inline long max(long __a, long __b) { + return __a < __b ? __b : __a; + } + // The "long double" overload is required, otherwise user code calling + // min/max for floating-point numbers will use the "long" overload. + // (SourceForge bug #495495) + inline long double min(long double __a, long double __b) { + return __b < __a ? __b : __a; + } + inline long double max(long double __a, long double __b) { + return __a < __b ? __b : __a; + } +} +using std::min; +using std::max; +# endif diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 242a244d..abffd3b0 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -251,27 +251,6 @@ namespace std { inline const _Tp& max(const _Tp& __a, const _Tp& __b) { return __a < __b ? __b : __a; } -# ifdef BOOST_MSVC - // Apparently, something in the Microsoft libraries requires the "long" - // overload, because it calls the min/max functions with arguments of - // slightly different type. (If this proves to be incorrect, this - // whole "BOOST_MSVC" section can be removed.) - inline long min(long __a, long __b) { - return __b < __a ? __b : __a; - } - inline long max(long __a, long __b) { - return __a < __b ? __b : __a; - } - // The "long double" overload is required, otherwise user code calling - // min/max for floating-point numbers will use the "long" overload. - // (SourceForge bug #495495) - inline long double min(long double __a, long double __b) { - return __b < __a ? __b : __a; - } - inline long double max(long double __a, long double __b) { - return __a < __b ? __b : __a; - } -# endif } # endif