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

std::literals::chrono_literals::operator""ns

Материал из 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::nanoseconds operator "" ns(unsigned long long nsec);
(1) (начиная с C++14)
constexpr std::chrono::duration</*не определено*/, std::nano> operator "" ns(long double nsec);
(2) (начиная с C++14)

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

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

Параметры

nsec — количество наносекунд

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

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

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

constexpr std::chrono::nanoseconds operator ""ns(unsigned long long ns)
{
    return std::chrono::nanoseconds(ns);
}
constexpr std::chrono::duration<long double, std::nano> operator ""ns(long double ns)
{
    return std::chrono::duration<long double, std::nano>(ns);
}

Примечание

Этот оператор объявлен в пространстве имён 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 d1 = 250ns;
    std::chrono::nanoseconds d2 = 1us;
    std::cout << "250нс = " << d1.count() << " наносекунд\n"
              << "1мкс = " << d2.count() << " наносекунд\n";
}

Вывод:

250нс = 250 наносекунд
1мкс = 1000 наносекунд

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

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