File tree Expand file tree Collapse file tree 6 files changed +158
-0
lines changed
test/std/time/time.point/time.point.arithmetic Expand file tree Collapse file tree 6 files changed +158
-0
lines changed Original file line number Diff line number Diff line change @@ -58,6 +58,19 @@ class time_point {
58
58
59
59
// arithmetic
60
60
61
+ #if _LIBCPP_STD_VER >= 20
62
+ _LIBCPP_HIDE_FROM_ABI constexpr time_point& operator ++() {
63
+ ++__d_;
64
+ return *this ;
65
+ }
66
+ _LIBCPP_HIDE_FROM_ABI constexpr time_point operator ++(int ) { return time_point{__d_++}; }
67
+ _LIBCPP_HIDE_FROM_ABI constexpr time_point& operator --() {
68
+ --__d_;
69
+ return *this ;
70
+ }
71
+ _LIBCPP_HIDE_FROM_ABI constexpr time_point operator --(int ) { return time_point{__d_--}; }
72
+ #endif // _LIBCPP_STD_VER >= 20
73
+
61
74
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 time_point& operator +=(const duration& __d) {
62
75
__d_ += __d;
63
76
return *this ;
Original file line number Diff line number Diff line change @@ -132,6 +132,11 @@ public:
132
132
133
133
// arithmetic
134
134
135
+ constexpr time_point& operator++(); // C++20
136
+ constexpr time_point operator++(int); // C++20
137
+ constexpr time_point& operator--(); // C++20
138
+ constexpr time_point operator--(int); // C++20
139
+
135
140
time_point& operator+=(const duration& d); // constexpr in C++17
136
141
time_point& operator-=(const duration& d); // constexpr in C++17
137
142
Original file line number Diff line number Diff line change
1
+ // ===----------------------------------------------------------------------===//
2
+ //
3
+ // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ // See https://llvm.org/LICENSE.txt for license information.
5
+ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ //
7
+ // ===----------------------------------------------------------------------===//
8
+ // REQUIRES: std-at-least-c++20
9
+
10
+ // <chrono>
11
+
12
+ // time_point
13
+
14
+ // constexpr time_point& operator++();
15
+
16
+ #include < cassert>
17
+ #include < chrono>
18
+
19
+ #include " test_macros.h"
20
+
21
+ constexpr bool test () {
22
+ using Clock = std::chrono::system_clock;
23
+ using Duration = std::chrono::milliseconds;
24
+ std::chrono::time_point<Clock, Duration> t{Duration{5 }};
25
+ std::chrono::time_point<Clock, Duration>& tref{++t};
26
+ assert (&tref == &t);
27
+ assert (tref.time_since_epoch () == Duration{6 });
28
+ return true ;
29
+ }
30
+
31
+ int main (int , char **) {
32
+ test ();
33
+ static_assert (test ());
34
+ return 0 ;
35
+ }
Original file line number Diff line number Diff line change
1
+ // ===----------------------------------------------------------------------===//
2
+ //
3
+ // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ // See https://llvm.org/LICENSE.txt for license information.
5
+ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ //
7
+ // ===----------------------------------------------------------------------===//
8
+ // REQUIRES: std-at-least-c++20
9
+
10
+ // <chrono>
11
+
12
+ // time_point
13
+
14
+ // constexpr time_point operator++(int);
15
+
16
+ #include < cassert>
17
+ #include < chrono>
18
+
19
+ #include " test_macros.h"
20
+
21
+ constexpr bool test () {
22
+ using Clock = std::chrono::system_clock;
23
+ using Duration = std::chrono::milliseconds;
24
+ std::chrono::time_point<Clock, Duration> t1{Duration{3 }};
25
+ std::chrono::time_point<Clock, Duration> t2{t1++};
26
+ assert (t1.time_since_epoch () == Duration{4 });
27
+ assert (t2.time_since_epoch () == Duration{3 });
28
+ return true ;
29
+ }
30
+
31
+ int main (int , char **) {
32
+ test ();
33
+ static_assert (test ());
34
+ return 0 ;
35
+ }
Original file line number Diff line number Diff line change
1
+ // ===----------------------------------------------------------------------===//
2
+ //
3
+ // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ // See https://llvm.org/LICENSE.txt for license information.
5
+ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ //
7
+ // ===----------------------------------------------------------------------===//
8
+ // REQUIRES: std-at-least-c++20
9
+
10
+ // <chrono>
11
+
12
+ // time_point
13
+
14
+ // constexpr time_point& operator--();
15
+
16
+ #include < cassert>
17
+ #include < chrono>
18
+
19
+ #include " test_macros.h"
20
+
21
+ constexpr bool test () {
22
+ using Clock = std::chrono::system_clock;
23
+ using Duration = std::chrono::milliseconds;
24
+ std::chrono::time_point<Clock, Duration> t{Duration{5 }};
25
+ std::chrono::time_point<Clock, Duration>& tref{--t};
26
+ assert (&tref == &t);
27
+ assert (tref.time_since_epoch () == Duration{4 });
28
+ return true ;
29
+ }
30
+
31
+ int main (int , char **) {
32
+ test ();
33
+ static_assert (test ());
34
+ return 0 ;
35
+ }
Original file line number Diff line number Diff line change
1
+ // ===----------------------------------------------------------------------===//
2
+ //
3
+ // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ // See https://llvm.org/LICENSE.txt for license information.
5
+ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ //
7
+ // ===----------------------------------------------------------------------===//
8
+ // REQUIRES: std-at-least-c++20
9
+
10
+ // <chrono>
11
+
12
+ // time_point
13
+
14
+ // constexpr time_point operator--(int);
15
+
16
+ #include < cassert>
17
+ #include < chrono>
18
+
19
+ #include " test_macros.h"
20
+
21
+ constexpr bool test () {
22
+ using Clock = std::chrono::system_clock;
23
+ using Duration = std::chrono::milliseconds;
24
+ std::chrono::time_point<Clock, Duration> t1{Duration{3 }};
25
+ std::chrono::time_point<Clock, Duration> t2{t1--};
26
+ assert (t1.time_since_epoch () == Duration{2 });
27
+ assert (t2.time_since_epoch () == Duration{3 });
28
+ return true ;
29
+ }
30
+
31
+ int main (int , char **) {
32
+ test ();
33
+ static_assert (test ());
34
+ return 0 ;
35
+ }
You can’t perform that action at this time.
0 commit comments