std::chrono:: operator+, std::chrono:: operator- (std::chrono::weekday)
From cppreference.net
|
ヘッダーで定義
<chrono>
|
||
|
constexpr
std::
chrono
::
weekday
operator
+
(
const
std::
chrono
::
weekday
&
wd,
const std:: chrono :: days & d ) noexcept ; |
(1) | (C++20以降) |
|
constexpr
std::
chrono
::
weekday
operator
+
(
const
std::
chrono
::
days
&
d,
const std:: chrono :: weekday & wd ) noexcept ; |
(2) | (C++20以降) |
|
constexpr
std::
chrono
::
weekday
operator
-
(
const
std::
chrono
::
weekday
&
wd,
const std:: chrono :: days & d ) noexcept ; |
(3) | (C++20以降) |
|
constexpr
std::
chrono
::
days
operator
-
(
const
std::
chrono
::
weekday
&
wd1,
const std:: chrono :: weekday & wd2 ) noexcept ; |
(4) | (C++20以降) |
1,2)
d.
count
(
)
日数を
wd
に加算する。結果に保持される曜日の値は、まず
static_cast
<
long
long
>
(
wd.
c_encoding
(
)
)
+
d.
count
(
)
を評価し、それを7で割った剰余を
[
0
,
6
]
の範囲の整数に変換することで計算される。
3)
d.
count
(
)
日数を
wd
から減算します。
return
wd
+
-
d
;
と等価です。
4)
wd1.
ok
(
)
と
wd2.
ok
(
)
が両方とも
true
の場合、
std::chrono::days
の値
d
を返す。このとき
d.
count
(
)
は範囲
[
0
,
6
]
内に収まり、かつ
wd2
+
d
==
wd1
を満たす。それ以外の場合、返される値は未規定である。
目次 |
戻り値
1-3)
上記で説明した方法で計算された曜日値を保持する
std::chrono::weekday
オブジェクト。
4)
A
std::chrono::days
representing the distance between
wd1
and
wd2
.
注記
計算がオーバーフローしない限り、
(1-3)
は
wd.
ok
(
)
が
false
の場合でも、常に有効な
weekday
を返します。
例
このコードを実行
#include <chrono> #include <iostream> int main() { std::cout << std::boolalpha; std::chrono::weekday wd{4}; wd = wd + std::chrono::days(2); std::cout << (wd == std::chrono::weekday(6)) << ' ' << (wd == std::chrono::Saturday) << ' '; wd = wd - std::chrono::days(3); std::cout << (wd == std::chrono::weekday(3)) << ' ' << (wd == std::chrono::Wednesday) << ' '; wd = std::chrono::Tuesday; wd = wd + std::chrono::days{8}; // (((2 + 8) == 10) % 7) == 3; std::cout << (wd == std::chrono::Wednesday) << ' '; wd = wd + (std::chrono::Sunday - std::chrono::Thursday); // (3 + 3) == 6 std::cout << (wd == std::chrono::Saturday) << '\n'; }
出力:
true true true true true true
関連項目
|
曜日をインクリメントまたはデクリメントする
(公開メンバ関数) |
|
|
日数を加算または減算する
(公開メンバ関数) |