Namespaces
Variants

std::chrono:: operator<< (std::chrono::year)

From cppreference.net
定義先ヘッダ <chrono>
template < class CharT, class Traits >

std:: basic_ostream < CharT, Traits > &

operator << ( std:: basic_ostream < CharT, Traits > & os, const std:: chrono :: year & y ) ;
(C++20以降)

std:: basic_string < CharT > s を形成し、これは y に格納された年値を10進数としてフォーマットしたもので、結果が4桁未満になる場合は左側を 0 で4桁になるようにパディングします。その後、 ! y. ok ( ) が真の場合、フォーマットされた文字列に " is not a valid year" を追加します。その文字列を os に挿入します。

次と同等

return os << ( y. ok ( ) ?
std:: format ( STATICALLY_WIDEN < CharT > ( "{:%Y}" ) , y ) :
std:: format ( STATICALLY_WIDEN < CharT > ( "{:%Y} is not a valid year" ) , y ) ) ;

STATICALLY_WIDEN < CharT > ( "..." ) は、 CharT char の場合 "..." であり、 CharT wchar_t の場合 L "..." です。

戻り値

os

#include <chrono>
#include <iostream>
int main()
{
    constexpr std::chrono::year y1{2020}, y2{-020}, y3{98304};
    std::cout << y1 << '\n'
              << y2 << '\n'
              << y3 << '\n';
}

出力例:

2020
-0016
-32768 is not a valid year

関連項目

(C++20)
引数のフォーマットされた表現を新しい文字列に格納する
(関数テンプレート)
year のフォーマットサポート
(クラステンプレートの特殊化)