File tree Expand file tree Collapse file tree 14 files changed +227
-59
lines changed Expand file tree Collapse file tree 14 files changed +227
-59
lines changed Original file line number Diff line number Diff line change @@ -1342,7 +1342,7 @@ template <
1342
1342
_LIBCPP_HIDE_FROM_ABI constexpr bool operator <=(const _Tp& __v, const optional<_Up>& __x)
1343
1343
# if _LIBCPP_STD_VER >= 26
1344
1344
requires (!__is_std_optional<_Tp>::value) && requires {
1345
- { __v <= __x } -> __core_convertible_to<bool >;
1345
+ { __v <= * __x } -> __core_convertible_to<bool >;
1346
1346
}
1347
1347
# endif
1348
1348
{
Original file line number Diff line number Diff line change 14
14
15
15
#include < optional>
16
16
17
+ #include " test_comparisons.h"
17
18
#include " test_macros.h"
18
19
20
+ #if TEST_STD_VER >= 26
21
+
22
+ // Test SFINAE.
23
+
24
+ static_assert (HasOperatorEqual<int , std::optional<int >>);
25
+ static_assert (HasOperatorEqual<int , std::optional<EqualityComparable>>);
26
+ static_assert (HasOperatorEqual<EqualityComparable, std::optional<EqualityComparable>>);
27
+
28
+ static_assert (!HasOperatorEqual<NonComparable, std::optional<NonComparable>>);
29
+ static_assert (!HasOperatorEqual<NonComparable, std::optional<EqualityComparable>>);
30
+
31
+
32
+ static_assert (HasOperatorEqual<std::optional<int >, int >);
33
+ static_assert (HasOperatorEqual<std::optional<EqualityComparable>, int >);
34
+ static_assert (HasOperatorEqual<std::optional<EqualityComparable>, EqualityComparable>);
35
+
36
+ static_assert (!HasOperatorEqual<std::optional<NonComparable>,NonComparable>);
37
+ static_assert (!HasOperatorEqual<std::optional<EqualityComparable>, NonComparable>);
38
+
39
+ #endif
40
+
19
41
using std::optional;
20
42
21
43
struct X {
Original file line number Diff line number Diff line change 14
14
15
15
#include < optional>
16
16
17
+ #include " test_comparisons.h"
17
18
#include " test_macros.h"
18
19
20
+ #if TEST_STD_VER >= 26
21
+
22
+ // Test SFINAE.
23
+ static_assert (HasOperatorGreaterThan<std::optional<ThreeWayComparable>, int >);
24
+ static_assert (HasOperatorGreaterThan<std::optional<ThreeWayComparable>, ThreeWayComparable>);
25
+
26
+ static_assert (!HasOperatorGreaterThan<std::optional<NonComparable>, NonComparable>);
27
+ static_assert (!HasOperatorGreaterThan<std::optional<ThreeWayComparable>, NonComparable>);
28
+ static_assert (!HasOperatorGreaterThan<std::optional<NonComparable>, ThreeWayComparable>);
29
+
30
+ static_assert (HasOperatorGreaterThan<int , std::optional<ThreeWayComparable>>);
31
+ static_assert (HasOperatorGreaterThan<ThreeWayComparable, std::optional<ThreeWayComparable>>);
32
+
33
+ static_assert (!HasOperatorGreaterThan<NonComparable, std::optional<NonComparable>>);
34
+ static_assert (!HasOperatorGreaterThan<NonComparable, std::optional<ThreeWayComparable>>);
35
+ static_assert (!HasOperatorGreaterThan<ThreeWayComparable, std::optional<NonComparable>>);
36
+
37
+ #endif
38
+
19
39
using std::optional;
20
40
21
41
struct X {
Original file line number Diff line number Diff line change 14
14
15
15
#include < optional>
16
16
17
+ #include " test_comparisons.h"
17
18
#include " test_macros.h"
18
19
20
+ #if TEST_STD_VER >= 26
21
+
22
+ // Test SFINAE.
23
+ static_assert (HasOperatorGreaterThanEqual<std::optional<ThreeWayComparable>, int >);
24
+ static_assert (HasOperatorGreaterThanEqual<std::optional<ThreeWayComparable>, ThreeWayComparable>);
25
+
26
+ static_assert (!HasOperatorGreaterThanEqual<std::optional<NonComparable>, NonComparable>);
27
+ static_assert (!HasOperatorGreaterThanEqual<std::optional<ThreeWayComparable>, NonComparable>);
28
+ static_assert (!HasOperatorGreaterThanEqual<std::optional<NonComparable>, ThreeWayComparable>);
29
+
30
+ static_assert (HasOperatorGreaterThanEqual<int , std::optional<ThreeWayComparable>>);
31
+ static_assert (HasOperatorGreaterThanEqual<ThreeWayComparable, std::optional<ThreeWayComparable>>);
32
+
33
+ static_assert (!HasOperatorGreaterThanEqual<NonComparable, std::optional<NonComparable>>);
34
+ static_assert (!HasOperatorGreaterThanEqual<NonComparable, std::optional<ThreeWayComparable>>);
35
+ static_assert (!HasOperatorGreaterThanEqual<ThreeWayComparable, std::optional<NonComparable>>);
36
+
37
+ #endif
38
+
19
39
using std::optional;
20
40
21
41
struct X {
Original file line number Diff line number Diff line change 14
14
15
15
#include < optional>
16
16
17
+ #include " test_comparisons.h"
17
18
#include " test_macros.h"
18
19
20
+ #if TEST_STD_VER >= 26
21
+
22
+ // Test SFINAE.
23
+ static_assert (HasOperatorLessThanEqual<std::optional<ThreeWayComparable>, int >);
24
+ static_assert (HasOperatorLessThanEqual<std::optional<ThreeWayComparable>, ThreeWayComparable>);
25
+
26
+ static_assert (!HasOperatorLessThanEqual<std::optional<NonComparable>, NonComparable>);
27
+ static_assert (!HasOperatorLessThanEqual<std::optional<ThreeWayComparable>, NonComparable>);
28
+ static_assert (!HasOperatorLessThanEqual<std::optional<NonComparable>, ThreeWayComparable>);
29
+
30
+ static_assert (HasOperatorLessThanEqual<int , std::optional<ThreeWayComparable>>);
31
+ static_assert (HasOperatorLessThanEqual<ThreeWayComparable, std::optional<ThreeWayComparable>>);
32
+
33
+ static_assert (!HasOperatorLessThanEqual<NonComparable, std::optional<NonComparable>>);
34
+ static_assert (!HasOperatorLessThanEqual<NonComparable, std::optional<ThreeWayComparable>>);
35
+ static_assert (!HasOperatorLessThanEqual<ThreeWayComparable, std::optional<NonComparable>>);
36
+
37
+ #endif
38
+
19
39
using std::optional;
20
40
21
41
struct X {
Original file line number Diff line number Diff line change 14
14
15
15
#include < optional>
16
16
17
+ #include " test_comparisons.h"
17
18
#include " test_macros.h"
18
19
20
+ #if TEST_STD_VER >= 26
21
+
22
+ // Test SFINAE.
23
+ static_assert (HasOperatorLessThan<std::optional<ThreeWayComparable>, int >);
24
+ static_assert (HasOperatorLessThan<std::optional<ThreeWayComparable>, ThreeWayComparable>);
25
+
26
+ static_assert (!HasOperatorLessThan<std::optional<NonComparable>, NonComparable>);
27
+ static_assert (!HasOperatorLessThan<std::optional<ThreeWayComparable>, NonComparable>);
28
+ static_assert (!HasOperatorLessThan<std::optional<NonComparable>, ThreeWayComparable>);
29
+
30
+ static_assert (HasOperatorLessThan<int , std::optional<ThreeWayComparable>>);
31
+ static_assert (HasOperatorLessThan<ThreeWayComparable, std::optional<ThreeWayComparable>>);
32
+
33
+ static_assert (!HasOperatorLessThan<NonComparable, std::optional<NonComparable>>);
34
+ static_assert (!HasOperatorLessThan<NonComparable, std::optional<ThreeWayComparable>>);
35
+ static_assert (!HasOperatorLessThan<ThreeWayComparable, std::optional<NonComparable>>);
36
+
37
+ #endif
38
+
19
39
using std::optional;
20
40
21
41
struct X {
Original file line number Diff line number Diff line change 14
14
15
15
#include < optional>
16
16
17
+ #include " test_comparisons.h"
17
18
#include " test_macros.h"
18
19
20
+ #if TEST_STD_VER >= 26
21
+
22
+ // Test SFINAE.
23
+
24
+ static_assert (HasOperatorNotEqual<int , std::optional<int >>);
25
+ static_assert (HasOperatorNotEqual<int , std::optional<EqualityComparable>>);
26
+ static_assert (HasOperatorNotEqual<EqualityComparable, std::optional<EqualityComparable>>);
27
+
28
+ static_assert (!HasOperatorNotEqual<NonComparable, std::optional<NonComparable>>);
29
+ static_assert (!HasOperatorNotEqual<NonComparable, std::optional<EqualityComparable>>);
30
+
31
+
32
+ static_assert (HasOperatorNotEqual<std::optional<int >, int >);
33
+ static_assert (HasOperatorNotEqual<std::optional<EqualityComparable>, int >);
34
+ static_assert (HasOperatorNotEqual<std::optional<EqualityComparable>, EqualityComparable>);
35
+
36
+ static_assert (!HasOperatorNotEqual<std::optional<NonComparable>,NonComparable>);
37
+ static_assert (!HasOperatorNotEqual<std::optional<EqualityComparable>, NonComparable>);
38
+
39
+ #endif
40
+
19
41
using std::optional;
20
42
21
43
struct X {
Original file line number Diff line number Diff line change 15
15
#include < type_traits>
16
16
#include < cassert>
17
17
18
- #include " test_macros.h"
19
18
#include " test_comparisons.h"
19
+ #include " test_macros.h"
20
+
21
+ #if TEST_STD_VER >= 26
20
22
21
23
// Test SFINAE.
22
24
23
- static_assert (HasOperatorEqual<std::optional<int >, std::optional<int >>);
24
- static_assert (HasOperatorEqual<std::optional<EqualityComparable>, std::optional<EqualityComparable>>);
25
+ static_assert (HasOperatorEqual<std::optional<int >>);
26
+ static_assert (HasOperatorEqual<std::optional<EqualityComparable>>);
27
+ static_assert (HasOperatorEqual<std::optional<EqualityComparable>, std::optional<int >>);
28
+
29
+ static_assert (!HasOperatorEqual<std::optional<NonComparable>>);
30
+ static_assert (!HasOperatorEqual<std::optional<EqualityComparable>, std::optional<NonComparable>>);
31
+
32
+ #endif
25
33
26
34
using std::optional;
27
35
Original file line number Diff line number Diff line change 13
13
14
14
#include < optional>
15
15
16
+ #include " test_comparisons.h"
16
17
#include " test_macros.h"
17
18
19
+ #if TEST_STD_VER >= 26
20
+
21
+ // Test SFINAE.
22
+ static_assert (HasOperatorGreaterThanEqual<std::optional<ThreeWayComparable>>);
23
+ static_assert (HasOperatorGreaterThanEqual<std::optional<ThreeWayComparable>, std::optional<int >>);
24
+
25
+ static_assert (!HasOperatorGreaterThanEqual<std::optional<NonComparable>>);
26
+ static_assert (!HasOperatorGreaterThanEqual<std::optional<EqualityComparable>>);
27
+ static_assert (!HasOperatorGreaterThanEqual<std::optional<ThreeWayComparable>, std::optional<NonComparable>>);
28
+
29
+ #endif
30
+
18
31
using std::optional;
19
32
20
33
struct X {
Original file line number Diff line number Diff line change 13
13
14
14
#include < optional>
15
15
16
+ #include " test_comparisons.h"
16
17
#include " test_macros.h"
17
18
19
+ #if TEST_STD_VER >= 26
20
+
21
+ // Test SFINAE.
22
+ static_assert (HasOperatorGreaterThan<std::optional<ThreeWayComparable>>);
23
+ static_assert (HasOperatorGreaterThan<std::optional<ThreeWayComparable>, std::optional<int >>);
24
+
25
+ static_assert (!HasOperatorGreaterThan<std::optional<NonComparable>>);
26
+ static_assert (!HasOperatorGreaterThan<std::optional<EqualityComparable>>);
27
+ static_assert (!HasOperatorGreaterThan<std::optional<ThreeWayComparable>, std::optional<NonComparable>>);
28
+
29
+ #endif
30
+
18
31
using std::optional;
19
32
20
33
struct X {
Original file line number Diff line number Diff line change 13
13
14
14
#include < optional>
15
15
16
+ #include " test_comparisons.h"
16
17
#include " test_macros.h"
17
18
19
+ #if TEST_STD_VER >= 26
20
+
21
+ // Test SFINAE.
22
+ static_assert (HasOperatorLessThanEqual<std::optional<ThreeWayComparable>>);
23
+ static_assert (HasOperatorLessThanEqual<std::optional<ThreeWayComparable>, std::optional<int >>);
24
+
25
+ static_assert (!HasOperatorLessThanEqual<std::optional<NonComparable>>);
26
+ static_assert (!HasOperatorLessThanEqual<std::optional<EqualityComparable>>);
27
+ static_assert (!HasOperatorLessThanEqual<std::optional<ThreeWayComparable>, std::optional<NonComparable>>);
28
+
29
+ #endif
30
+
18
31
using std::optional;
19
32
20
33
struct X {
Original file line number Diff line number Diff line change 13
13
14
14
#include < optional>
15
15
16
+ #include " test_comparisons.h"
16
17
#include " test_macros.h"
17
18
19
+ #if TEST_STD_VER >= 26
20
+
21
+ // Test SFINAE.
22
+ static_assert (HasOperatorLessThan<std::optional<ThreeWayComparable>>);
23
+ static_assert (HasOperatorLessThan<std::optional<ThreeWayComparable>, std::optional<int >>);
24
+
25
+ static_assert (!HasOperatorLessThan<std::optional<NonComparable>>);
26
+ static_assert (!HasOperatorLessThan<std::optional<EqualityComparable>>);
27
+ static_assert (!HasOperatorLessThan<std::optional<ThreeWayComparable>, std::optional<NonComparable>>);
28
+
29
+ #endif
30
+
18
31
using std::optional;
19
32
20
33
struct X {
Original file line number Diff line number Diff line change 15
15
#include < type_traits>
16
16
#include < cassert>
17
17
18
+ #include " test_comparisons.h"
18
19
#include " test_macros.h"
19
20
21
+ #if TEST_STD_VER >= 26
22
+
23
+ // Test SFINAE.
24
+
25
+ static_assert (HasOperatorNotEqual<std::optional<int >>);
26
+ static_assert (HasOperatorNotEqual<std::optional<EqualityComparable>>);
27
+ static_assert (HasOperatorNotEqual<std::optional<EqualityComparable>, std::optional<int >>);
28
+
29
+ static_assert (!HasOperatorNotEqual<std::optional<NonComparable>>);
30
+ static_assert (!HasOperatorNotEqual<std::optional<EqualityComparable>, std::optional<NonComparable>>);
31
+
32
+ #endif
33
+
34
+
20
35
using std::optional;
21
36
22
37
struct X {
You can’t perform that action at this time.
0 commit comments