Exclude g++4.7 from constexpr implementation

This commit is contained in:
Glen Fernandes
2017-02-02 21:44:14 -05:00
parent 9587d6b845
commit e647763fb0

View File

@ -16,9 +16,9 @@ http://www.boost.org/LICENSE_1_0.txt)
#include <boost/config.hpp> #include <boost/config.hpp>
#if BOOST_MSVC_FULL_VER >= 190024215 #if defined(BOOST_MSVC_FULL_VER) && BOOST_MSVC_FULL_VER >= 190024215
#define BOOST_CORE_HAS_BUILTIN_ADDRESSOF #define BOOST_CORE_HAS_BUILTIN_ADDRESSOF
#elif BOOST_GCC >= 70000 #elif defined(BOOST_GCC) && BOOST_GCC >= 70000
#define BOOST_CORE_HAS_BUILTIN_ADDRESSOF #define BOOST_CORE_HAS_BUILTIN_ADDRESSOF
#elif defined(__has_builtin) #elif defined(__has_builtin)
#if __has_builtin(__builtin_addressof) #if __has_builtin(__builtin_addressof)
@ -120,7 +120,8 @@ struct address_of<const volatile addressof_null_t> {
defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
defined(BOOST_NO_CXX11_CONSTEXPR) || \ defined(BOOST_NO_CXX11_CONSTEXPR) || \
defined(BOOST_NO_CXX11_DECLTYPE) || \ defined(BOOST_NO_CXX11_DECLTYPE) || \
BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, < 190024215) BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1900)) || \
BOOST_WORKAROUND(BOOST_GCC, < 40800)
#define BOOST_CORE_NO_CONSTEXPR_ADDRESSOF #define BOOST_CORE_NO_CONSTEXPR_ADDRESSOF
template<class T> template<class T>
@ -172,13 +173,7 @@ const T (*addressof(const T (&o)[N]) BOOST_NOEXCEPT)[N]
namespace detail { namespace detail {
template<class T> template<class T>
struct addressof_rvalue { T&& addressof_declval() BOOST_NOEXCEPT;
typedef T&& type;
};
template<class T>
typename addressof_rvalue<T>::type
addressof_declval() BOOST_NOEXCEPT;
template<class> template<class>
struct addressof_void { struct addressof_void {
@ -196,9 +191,7 @@ struct addressof_member_operator<T, typename
static constexpr bool value = true; static constexpr bool value = true;
}; };
#if BOOST_WORKAROUND(BOOST_INTEL, < 1600) || \ #if BOOST_WORKAROUND(BOOST_INTEL, < 1600)
(defined(BOOST_GCC) && \
BOOST_WORKAROUND(BOOST_GCC, < 40800))
struct addressof_addressable { }; struct addressof_addressable { };
addressof_addressable* addressof_addressable*