Namespaces
Variants

std::chrono:: operator+, std::chrono:: operator- (std::chrono::month)

From cppreference.net
ヘッダーで定義 <chrono>
constexpr std:: chrono :: month operator + ( const std:: chrono :: month & m,
const std:: chrono :: months & ms ) noexcept ;
(1) (C++20以降)
constexpr std:: chrono :: month operator + ( const std:: chrono :: months & ms,
const std:: chrono :: month & m ) noexcept ;
(2) (C++20以降)
constexpr std:: chrono :: month operator - ( const std:: chrono :: month & m,
const std:: chrono :: months & ms ) noexcept ;
(3) (C++20以降)
constexpr std:: chrono :: months operator - ( const std:: chrono :: month & m1,
const std:: chrono :: month & m2 ) noexcept ;
(4) (C++20以降)
1,2) ms. count ( ) ヶ月を m に加算します。結果として保持される月の値は、まず static_cast < long long > ( unsigned ( m ) ) + ( ms. count ( ) - 1 ) を評価し、それを12を法として [ 0 , 11 ] の範囲の整数に縮小し、その後1を加えることで計算されます。
3) 月数を ms. count ( ) から減算し、 m の結果を返します。 return m + - ms ; と同等です。
4) m1. ok ( ) m2. ok ( ) が両方とも true の場合、 std::chrono::months m を返す。このとき m. count ( ) は範囲 [ 0 , 11 ] 内に収まり、かつ m2 + m == m1 を満たす。それ以外の場合、返される値は未規定である。

目次

戻り値

1-3) A std::chrono::month 上記の方法で計算された月の値を保持する。
4) A std::chrono::months representing the distance between m1 and m2 .

注記

計算がオーバーフローしない限り、 (1-3) m. ok ( ) false の場合でも常に有効な月を返します。

2つの month 値の減算結果は std::chrono::months 型の期間(duration)です。この期間単位はグレゴリオ暦の平均的な月の長さを表し、結果の期間はオペランドで表される特定の月の日数とは無関係です。例えば、 std:: chrono :: seconds ( std:: chrono :: April - std:: chrono :: March ) の結果は3月の秒数( 2678400s )ではなく、 2629746s (30.436875日)です。

#include <cassert>
#include <chrono>
int main()
{
    std::chrono::month m{6};
    m = m + std::chrono::months(2);
    assert(m == std::chrono::month(8));
    m = m - std::chrono::months(3);
    assert(m == std::chrono::month(5));
    constexpr std::chrono::months ms = std::chrono::month(8) - std::chrono::month(6);
    static_assert(ms == std::chrono::months(2));
}

関連項目

月をインクリメントまたはデクリメントする
(公開メンバ関数)
月数を加算または減算する
(公開メンバ関数)