Espacios de nombres
Variantes

std::chrono::year::ok

De cppreference.com
 
 
Biblioteca de servicios
Apoyo del lenguaje
Apoyo de tipos (tipos básicos, RTTI)
Macros de prueba de característica de la biblioteca (C++20)
Servicios de programa
Funciones variádicas
Apoyo de corrutinas (C++20)
Apoyo de contratos (C++26)
Comparación de tres vías (C++20)
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

 
 
 
constexpr bool ok() const noexcept;
(desde C++20)

Verifica si el año almacenado en *this se encuentra en el rango válido; es decir, [-32767, 32767].

Valor de retorno

true si el año almacenado en *this se encuentra en el rango [-32767, 32767], false de lo contrario.

Posible implementación

Véanse las implementaciones en libstdc++, libc++, y de Howard Hinnant en date.h.

class Year
{
    short year_; /* solo exposición */

public:

    bool ok() const noexcept { return year_ != std::numeric_limits<short>::min(); }

    /*...*/
};

Ejemplo

#include <iostream>
#include <iomanip>
#include <chrono>
 
int main()
{
    for (const int i : {2020, 0x8000, 0x8001, 0xFFFF, 0x18000}) {
        const std::chrono::year y{i};
        std::cout << std::boolalpha
            << "año a comprobar: " << std::setw(6) << i
            << " │ valor interno: " << std::setw(7) << static_cast<int>(y)
            << " │ ok(): " << y.ok() << '\n';
    }
}

Posible salida:

año a comprobar:   2020 │ valor interno:    2020 │ ok(): true
año a comprobar:  32768 │ valor interno:  -32768 │ ok(): false
año a comprobar:  32769 │ valor interno:  -32767 │ ok(): true
año a comprobar:  65535 │ valor interno:      -1 │ ok(): true
año a comprobar:  98304 │ valor interno:  -32768 │ ok(): false