[libc++] Remove a few workarounds for old Clang versions (#143858)
This commit is contained in:
parent
a75e0627f9
commit
79a2b15a4c
@ -505,13 +505,6 @@ typedef __char32_t char32_t;
|
||||
# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI
|
||||
# endif
|
||||
|
||||
// TODO: Remove this workaround once we drop support for Clang 16
|
||||
# if __has_warning("-Wc++23-extensions")
|
||||
# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED_CXX23_EXTENSION _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++23-extensions")
|
||||
# else
|
||||
# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED_CXX23_EXTENSION _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++2b-extensions")
|
||||
# endif
|
||||
|
||||
// Clang modules take a significant compile time hit when pushing and popping diagnostics.
|
||||
// Since all the headers are marked as system headers unless _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER is defined, we can
|
||||
// simply disable this pushing and popping when _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER isn't defined.
|
||||
@ -522,7 +515,7 @@ typedef __char32_t char32_t;
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++14-extensions") \
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++17-extensions") \
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++20-extensions") \
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED_CXX23_EXTENSION \
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++23-extensions") \
|
||||
_LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++14-extensions") \
|
||||
_LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++17-extensions") \
|
||||
_LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++20-extensions") \
|
||||
|
||||
@ -209,21 +209,12 @@ struct pair
|
||||
# endif
|
||||
|
||||
# if _LIBCPP_STD_VER >= 23
|
||||
// TODO: Remove this workaround in LLVM 20. The bug got fixed in Clang 18.
|
||||
// This is a workaround for http://llvm.org/PR60710. We should be able to remove it once Clang is fixed.
|
||||
template <class _PairLike>
|
||||
_LIBCPP_HIDE_FROM_ABI static constexpr bool __pair_like_explicit_wknd() {
|
||||
if constexpr (__pair_like_no_subrange<_PairLike>) {
|
||||
return !is_convertible_v<decltype(std::get<0>(std::declval<_PairLike&&>())), first_type> ||
|
||||
!is_convertible_v<decltype(std::get<1>(std::declval<_PairLike&&>())), second_type>;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
template <__pair_like_no_subrange _PairLike>
|
||||
requires(is_constructible_v<first_type, decltype(std::get<0>(std::declval<_PairLike &&>()))> &&
|
||||
is_constructible_v<second_type, decltype(std::get<1>(std::declval<_PairLike &&>()))>)
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr explicit(__pair_like_explicit_wknd<_PairLike>()) pair(_PairLike&& __p)
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr explicit(
|
||||
!is_convertible_v<decltype(std::get<0>(std::declval<_PairLike&&>())), first_type> ||
|
||||
!is_convertible_v<decltype(std::get<1>(std::declval<_PairLike&&>())), second_type>) pair(_PairLike&& __p)
|
||||
: first(std::get<0>(std::forward<_PairLike>(__p))), second(std::get<1>(std::forward<_PairLike>(__p))) {}
|
||||
# endif
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user