close
Пространства имён
Варианты
Действия

std::chrono::year::ok

Материал из cppreference.com
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
 
 
<tbody> </tbody>
constexpr bool ok() const noexcept;
(начиная с C++20)

Проверяет, находится ли значение года, хранящееся в *this, в допустимом диапазоне, т.е. [-3276732767].

Возвращаемое значение

true, если значение года, хранящееся в *this, находится в диапазоне [-3276732767]. Иначе false.

Возможная реализация

Смотрите реализации в libstdc++, libc++ и date.h Говарда Хиннанта.

class Year
{
    short year_;   // только экспозиция

public:

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

    /*...*/
};

Пример

#include <iostream>
#include <iomanip>
#include <chrono>
 
int main()
{
    std::cout << "введённый год │ внутреннее значение │ ok()\n" << std::boolalpha;

    for (const int i : {2020, 0x8000, 0x8001, 0xFFFF, 0x18000})
    {
        const std::chrono::year y{i};
        std::cout << std::setw(13) << i << " │ "
            << std::setw(19) << static_cast<int>(y) << " │ "
            << y.ok() << '\n';
    }
}

Возможный вывод:

введённый год │ внутреннее значение │ ok()
         2020 │                2020 │ true
        32768 │              -32768 │ false
        32769 │              -32767 │ true
        65535 │                  -1 │ true
        98304 │              -32768 │ false