Index: include/__config =================================================================== --- include/__config +++ include/__config @@ -51,9 +51,13 @@ #elif _LIBCPP_ABI_VERSION == 1 // Feature macros for disabling pre ABI v1 features. All of these options // are deprecated. -#if defined(__FreeBSD__) -#define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR -#endif +# if !defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) +# if defined(__FreeBSD__) +# define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR 1 +# else +# define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR 0 +# endif +# endif #endif #ifdef _LIBCPP_TRIVIAL_PAIR_COPY_CTOR Index: include/utility =================================================================== --- include/utility +++ include/utility @@ -296,7 +296,7 @@ constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); #endif -#if defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) +#if _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR != 0 struct __non_trivially_copyable_base { _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY __non_trivially_copyable_base() _NOEXCEPT {} @@ -307,7 +307,7 @@ template struct _LIBCPP_TYPE_VIS_ONLY pair -#if defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) +#if _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR != 0 : private __non_trivially_copyable_base #endif { Index: test/libcxx/utilities/utility/pairs/pairs.pair/non_trivial_copy_move_ABI.pass.cpp =================================================================== --- test/libcxx/utilities/utility/pairs/pairs.pair/non_trivial_copy_move_ABI.pass.cpp +++ test/libcxx/utilities/utility/pairs/pairs.pair/non_trivial_copy_move_ABI.pass.cpp @@ -21,7 +21,7 @@ #undef _LIBCPP_ABI_UNSTABLE #undef _LIBCPP_ABI_VERSION #define _LIBCPP_ABI_VERSION 1 -#define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR +#define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR 1 #include #include @@ -30,7 +30,7 @@ #include "test_macros.h" -#if !defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) +#if _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR == 0 #error trivial ctor ABI macro defined #endif Index: test/libcxx/utilities/utility/pairs/pairs.pair/trivial_copy_move_ABI.pass.cpp =================================================================== --- test/libcxx/utilities/utility/pairs/pairs.pair/trivial_copy_move_ABI.pass.cpp +++ test/libcxx/utilities/utility/pairs/pairs.pair/trivial_copy_move_ABI.pass.cpp @@ -29,7 +29,7 @@ #include "test_macros.h" -#if defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) +#if _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR != 0 #error Non-trivial ctor ABI macro defined #endif Index: test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp =================================================================== --- test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp +++ test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp @@ -32,14 +32,14 @@ typedef std::pair P; { static_assert(std::is_copy_constructible

::value, ""); -#if !defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) +#if _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR == 0 static_assert(std::is_trivially_copy_constructible

::value, ""); #endif } #if TEST_STD_VER >= 11 { static_assert(std::is_move_constructible

::value, ""); -#if !defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) +#if _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR == 0 static_assert(std::is_trivially_move_constructible

::value, ""); #endif } @@ -48,7 +48,7 @@ static_assert(!std::is_copy_constructible::value, ""); static_assert(!std::is_trivially_copy_constructible::value, ""); static_assert(std::is_move_constructible::value, ""); -#if !defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) +#if _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR == 0 static_assert(std::is_trivially_move_constructible::value, ""); #endif }