|
|
@@ -103,7 +103,7 @@ public:
|
|
|
* @tparam Dummy Dummy template parameter used for internal purposes.
|
|
|
*/
|
|
|
template<bool Dummy = true, typename = std::enable_if_t<Dummy && std::is_default_constructible_v<first_type> && std::is_default_constructible_v<second_type>>>
|
|
|
- constexpr compressed_pair() noexcept(std::is_nothrow_default_constructible_v<first_base> &&std::is_nothrow_default_constructible_v<second_base>)
|
|
|
+ constexpr compressed_pair() noexcept(std::is_nothrow_default_constructible_v<first_base> && std::is_nothrow_default_constructible_v<second_base>)
|
|
|
: first_base{},
|
|
|
second_base{} {}
|
|
|
|
|
|
@@ -111,13 +111,13 @@ public:
|
|
|
* @brief Copy constructor.
|
|
|
* @param other The instance to copy from.
|
|
|
*/
|
|
|
- constexpr compressed_pair(const compressed_pair &other) noexcept(std::is_nothrow_copy_constructible_v<first_base> &&std::is_nothrow_copy_constructible_v<second_base>) = default;
|
|
|
+ constexpr compressed_pair(const compressed_pair &other) noexcept(std::is_nothrow_copy_constructible_v<first_base> && std::is_nothrow_copy_constructible_v<second_base>) = default;
|
|
|
|
|
|
/**
|
|
|
* @brief Move constructor.
|
|
|
* @param other The instance to move from.
|
|
|
*/
|
|
|
- constexpr compressed_pair(compressed_pair &&other) noexcept(std::is_nothrow_move_constructible_v<first_base> &&std::is_nothrow_move_constructible_v<second_base>) = default;
|
|
|
+ constexpr compressed_pair(compressed_pair &&other) noexcept(std::is_nothrow_move_constructible_v<first_base> && std::is_nothrow_move_constructible_v<second_base>) = default;
|
|
|
|
|
|
/**
|
|
|
* @brief Constructs a pair from its values.
|
|
|
@@ -127,7 +127,7 @@ public:
|
|
|
* @param other Value to use to initialize the second element.
|
|
|
*/
|
|
|
template<typename Arg, typename Other>
|
|
|
- constexpr compressed_pair(Arg &&arg, Other &&other) noexcept(std::is_nothrow_constructible_v<first_base, Arg> &&std::is_nothrow_constructible_v<second_base, Other>)
|
|
|
+ constexpr compressed_pair(Arg &&arg, Other &&other) noexcept(std::is_nothrow_constructible_v<first_base, Arg> && std::is_nothrow_constructible_v<second_base, Other>)
|
|
|
: first_base{std::forward<Arg>(arg)},
|
|
|
second_base{std::forward<Other>(other)} {}
|
|
|
|
|
|
@@ -139,7 +139,7 @@ public:
|
|
|
* @param other Arguments to use to initialize the second element.
|
|
|
*/
|
|
|
template<typename... Args, typename... Other>
|
|
|
- constexpr compressed_pair(std::piecewise_construct_t, std::tuple<Args...> args, std::tuple<Other...> other) noexcept(std::is_nothrow_constructible_v<first_base, Args...> &&std::is_nothrow_constructible_v<second_base, Other...>)
|
|
|
+ constexpr compressed_pair(std::piecewise_construct_t, std::tuple<Args...> args, std::tuple<Other...> other) noexcept(std::is_nothrow_constructible_v<first_base, Args...> && std::is_nothrow_constructible_v<second_base, Other...>)
|
|
|
: first_base{std::move(args), std::index_sequence_for<Args...>{}},
|
|
|
second_base{std::move(other), std::index_sequence_for<Other...>{}} {}
|
|
|
|
|
|
@@ -148,14 +148,14 @@ public:
|
|
|
* @param other The instance to copy from.
|
|
|
* @return This compressed pair object.
|
|
|
*/
|
|
|
- constexpr compressed_pair &operator=(const compressed_pair &other) noexcept(std::is_nothrow_copy_assignable_v<first_base> &&std::is_nothrow_copy_assignable_v<second_base>) = default;
|
|
|
+ constexpr compressed_pair &operator=(const compressed_pair &other) noexcept(std::is_nothrow_copy_assignable_v<first_base> && std::is_nothrow_copy_assignable_v<second_base>) = default;
|
|
|
|
|
|
/**
|
|
|
* @brief Move assignment operator.
|
|
|
* @param other The instance to move from.
|
|
|
* @return This compressed pair object.
|
|
|
*/
|
|
|
- constexpr compressed_pair &operator=(compressed_pair &&other) noexcept(std::is_nothrow_move_assignable_v<first_base> &&std::is_nothrow_move_assignable_v<second_base>) = default;
|
|
|
+ constexpr compressed_pair &operator=(compressed_pair &&other) noexcept(std::is_nothrow_move_assignable_v<first_base> && std::is_nothrow_move_assignable_v<second_base>) = default;
|
|
|
|
|
|
/**
|
|
|
* @brief Returns the first element that a pair stores.
|
|
|
@@ -187,7 +187,7 @@ public:
|
|
|
* @brief Swaps two compressed pair objects.
|
|
|
* @param other The compressed pair to swap with.
|
|
|
*/
|
|
|
- constexpr void swap(compressed_pair &other) noexcept(std::is_nothrow_swappable_v<first_type> &&std::is_nothrow_swappable_v<second_type>) {
|
|
|
+ constexpr void swap(compressed_pair &other) noexcept(std::is_nothrow_swappable_v<first_type> && std::is_nothrow_swappable_v<second_type>) {
|
|
|
using std::swap;
|
|
|
swap(first(), other.first());
|
|
|
swap(second(), other.second());
|
|
|
@@ -243,8 +243,6 @@ inline constexpr void swap(compressed_pair<First, Second> &lhs, compressed_pair<
|
|
|
|
|
|
} // namespace entt
|
|
|
|
|
|
-// disable structured binding support for clang 6, it messes when specializing tuple_size
|
|
|
-#if !defined __clang_major__ || __clang_major__ > 6
|
|
|
namespace std {
|
|
|
|
|
|
/**
|
|
|
@@ -267,6 +265,5 @@ struct tuple_element<Index, entt::compressed_pair<First, Second>>: conditional<I
|
|
|
};
|
|
|
|
|
|
} // namespace std
|
|
|
-#endif
|
|
|
|
|
|
#endif
|