66//
77// ===----------------------------------------------------------------------===//
88
9- // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
9+ // REQUIRES: std-at-least- c++23
1010
1111// These compilers don't support __builtin_is_implicit_lifetime yet.
12- // UNSUPPORTED: clang-19, gcc-14, gcc-15, apple-clang-16, apple-clang-17
12+ // UNSUPPORTED: clang-19, gcc-15
1313
1414// <type_traits>
1515
@@ -139,13 +139,6 @@ constexpr void test_is_implicit_lifetime() {
139139 test_is_implicit_lifetime<T[94 ], true >();
140140}
141141
142- struct ArithmeticTypesTest {
143- template <class T >
144- constexpr void operator ()() {
145- test_is_implicit_lifetime<T>();
146- }
147- };
148-
149142constexpr bool test () {
150143 // Standard fundamental C++ types
151144
@@ -155,7 +148,7 @@ constexpr bool test() {
155148 test_is_implicit_lifetime<const void , false >();
156149 test_is_implicit_lifetime<volatile void , false >();
157150
158- types::for_each (types::arithmetic_types (), ArithmeticTypesTest{ });
151+ types::for_each (types::arithmetic_types (), []< typename T> { test_is_implicit_lifetime<T>(); });
159152
160153 test_is_implicit_lifetime<Enum>();
161154 test_is_implicit_lifetime<SignedEnum>();
@@ -166,7 +159,7 @@ constexpr bool test() {
166159 test_is_implicit_lifetime<UnsignedEnumClass>();
167160
168161 test_is_implicit_lifetime<void (), false >();
169- test_is_implicit_lifetime<void ()&, false >();
162+ test_is_implicit_lifetime<void () &, false >();
170163 test_is_implicit_lifetime<void () const , false >();
171164 test_is_implicit_lifetime<void (&)(), false >();
172165 test_is_implicit_lifetime<void (*)(), true >();
@@ -177,8 +170,8 @@ constexpr bool test() {
177170 test_is_implicit_lifetime<int EmptyStruct::*, true >(); // Pointer-to-member
178171 test_is_implicit_lifetime<int (EmptyStruct::*)(), true >();
179172 test_is_implicit_lifetime<int (EmptyStruct::*)() const , true >();
180- test_is_implicit_lifetime<int (EmptyStruct::*)()&, true >();
181- test_is_implicit_lifetime<int (EmptyStruct::*)()&&, true >();
173+ test_is_implicit_lifetime<int (EmptyStruct::*)() &, true >();
174+ test_is_implicit_lifetime<int (EmptyStruct::*)() &&, true >();
182175
183176 test_is_implicit_lifetime<IncompleteStruct[], true >();
184177 test_is_implicit_lifetime<IncompleteStruct[82 ], true >();
0 commit comments