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

std::literals::chrono_literals::operator""h

Материал из 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>
Определено в заголовочном файле <chrono>
constexpr std::chrono::hours operator "" h(unsigned long long hrs);
(1) (начиная с C++14)
constexpr std::chrono::duration</*не определено*/, std::ratio<3600,1>> operator "" h(long double hrs);
(2) (начиная с C++14)

Формирует литерал std::chrono::duration, представляющий часы.

1) Целочисленный литерал, возвращает ровно std::chrono::hours(hrs).
2) Литерал с плавающей запятой, возвращает длительность с плавающей запятой, эквивалентную std::chrono::hours.

Параметры

hrs количество часов

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

Литерал std::chrono::duration.

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

constexpr std::chrono::hours operator ""h(unsigned long long h)
{
    return std::chrono::hours(h);
}
constexpr std::chrono::duration<long double, ratio<3600,1>> operator ""h(long double h)
{
    return std::chrono::duration<long double, std::ratio<3600,1>>(h);
}

Примечание

Этот оператор объявлен в пространстве имён std::literals::chrono_literals, где и literals, и chrono_literals это встроенные пространства имён. Доступ к этому оператору можно получить с помощью:

  • using namespace std::literals,
  • using namespace std::chrono_literals, или
  • using namespace std::literals::chrono_literals.

Кроме того, в пространстве имён std::chrono стандартная библиотека предоставляет директиву using namespace literals::chrono_literals;, поэтому, если программист использует using namespace std::chrono; чтобы получить доступ к классам в библиотеке chrono, соответствующие литеральные операторы также становятся видимыми.

Пример

#include <iostream>
#include <chrono>

int main()
{
    using namespace std::chrono_literals;
    auto day = 24h;
    auto halfhour = 0.5h;
    std::cout << "один день это " << day.count() << " часа (" << day << ")\n"
              << "полчаса это " << halfhour.count() << " часа ("
              << halfhour << ")\n";
}

Вывод:

один день это 24 часа (24h)
полчаса это 0.5 часа (0.5h)

Смотрите также

строит новый duration
(public функция-элемент std::chrono::duration<Rep,Period>) [править]