Skip to content

Commit 9dfaf1a

Browse files
committed
More fixes.
1 parent 4a0bb32 commit 9dfaf1a

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

libcxx/modules/std/ranges.inc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,6 @@ export namespace std {
138138
}
139139
#endif // _LIBCPP_HAS_NO_LOCALIZATION
140140

141-
#if _LIBCPP_STD_VER >= 23
142-
// [range.adaptor.object], range adaptor objects
143-
using std::ranges::range_adaptor_closure;
144141
// Note: This declaration not in the synopsis or explicitly in the wording.
145142
// However it is needed for the range adaptors.
146143
// [range.adaptor.object]/3
@@ -151,7 +148,11 @@ export namespace std {
151148
// involving an object of type cv D as an operand to the | operator is
152149
// undefined if overload resolution selects a program-defined operator|
153150
// function.
151+
// This is used internally in C++20 mode.
154152
using std::ranges::operator|;
153+
#if _LIBCPP_STD_VER >= 23
154+
// [range.adaptor.object], range adaptor objects
155+
using std::ranges::range_adaptor_closure;
155156
#endif
156157

157158
// [range.all], all view

libcxx/test/tools/clang_tidy_checks/CMakeLists.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,25 @@ if(NOT HAS_CLANG_TIDY_HEADERS)
6464
"clang-tidy headers are not present.")
6565
return()
6666
endif()
67+
68+
# The clangTidy plugin uses C++20, when using stdlibc++ verify the version is correct.
69+
# Note it has not been tested whether version 11 works.
70+
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test.cpp" "
71+
#if defined(_GLIBCXX_RELEASE) && _GLIBCXX_RELEASE < 12
72+
# error The stdlibc++ version is too old.
73+
#endif
74+
int main(){}
75+
")
76+
try_compile(HAS_NEWER_STANDARD_LIBRARY
77+
"${CMAKE_CURRENT_BINARY_DIR}"
78+
"${CMAKE_CURRENT_BINARY_DIR}/test.cpp"
79+
LINK_LIBRARIES clangTidy)
80+
81+
if(NOT HAS_NEWER_STANDARD_LIBRARY)
82+
message(STATUS "Clang-tidy tests are disabled due to using "
83+
"stdlibc++ older than version 12")
84+
return()
85+
endif()
6786
message(STATUS "Clang-tidy tests are enabled.")
6887

6988
set(SOURCES

0 commit comments

Comments
 (0)