Skip to content

Commit 79a2b15

Browse files
authored
[libc++] Remove a few workarounds for old Clang versions (#143858)
1 parent a75e062 commit 79a2b15

File tree

2 files changed

+4
-20
lines changed

2 files changed

+4
-20
lines changed

libcxx/include/__config

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -505,13 +505,6 @@ typedef __char32_t char32_t;
505505
# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI
506506
# endif
507507

508-
// TODO: Remove this workaround once we drop support for Clang 16
509-
# if __has_warning("-Wc++23-extensions")
510-
# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED_CXX23_EXTENSION _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++23-extensions")
511-
# else
512-
# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED_CXX23_EXTENSION _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++2b-extensions")
513-
# endif
514-
515508
// Clang modules take a significant compile time hit when pushing and popping diagnostics.
516509
// Since all the headers are marked as system headers unless _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER is defined, we can
517510
// 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;
522515
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++14-extensions") \
523516
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++17-extensions") \
524517
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++20-extensions") \
525-
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED_CXX23_EXTENSION \
518+
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++23-extensions") \
526519
_LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++14-extensions") \
527520
_LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++17-extensions") \
528521
_LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++20-extensions") \

libcxx/include/__utility/pair.h

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -209,21 +209,12 @@ struct pair
209209
# endif
210210

211211
# if _LIBCPP_STD_VER >= 23
212-
// TODO: Remove this workaround in LLVM 20. The bug got fixed in Clang 18.
213-
// This is a workaround for http://llvm.org/PR60710. We should be able to remove it once Clang is fixed.
214-
template <class _PairLike>
215-
_LIBCPP_HIDE_FROM_ABI static constexpr bool __pair_like_explicit_wknd() {
216-
if constexpr (__pair_like_no_subrange<_PairLike>) {
217-
return !is_convertible_v<decltype(std::get<0>(std::declval<_PairLike&&>())), first_type> ||
218-
!is_convertible_v<decltype(std::get<1>(std::declval<_PairLike&&>())), second_type>;
219-
}
220-
return false;
221-
}
222-
223212
template <__pair_like_no_subrange _PairLike>
224213
requires(is_constructible_v<first_type, decltype(std::get<0>(std::declval<_PairLike &&>()))> &&
225214
is_constructible_v<second_type, decltype(std::get<1>(std::declval<_PairLike &&>()))>)
226-
_LIBCPP_HIDE_FROM_ABI constexpr explicit(__pair_like_explicit_wknd<_PairLike>()) pair(_PairLike&& __p)
215+
_LIBCPP_HIDE_FROM_ABI constexpr explicit(
216+
!is_convertible_v<decltype(std::get<0>(std::declval<_PairLike&&>())), first_type> ||
217+
!is_convertible_v<decltype(std::get<1>(std::declval<_PairLike&&>())), second_type>) pair(_PairLike&& __p)
227218
: first(std::get<0>(std::forward<_PairLike>(__p))), second(std::get<1>(std::forward<_PairLike>(__p))) {}
228219
# endif
229220

0 commit comments

Comments
 (0)