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

std::chrono::duration<Rep,Period>::operator=

Материал из 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>
duration& operator=( const duration &other ) = default;
(начиная с C++11)

Присваивает содержимое одного duration другому.

Параметры

other duration для копирования

Пример

#include <iostream>
#include <chrono>

int main()
{
    using namespace std::chrono_literals;

    std::chrono::hours z_hours{};
    std::chrono::seconds z_seconds{};

    z_hours = 2h; // ok, преобразование не нужно

    z_seconds = z_hours;
      // Во-первых, используется конструктор преобразования
      // для создания временного объекта типа `lhs`.
      // Этот конструктор неявно вызывает функцию приведения
      // chrono::duration_cast<std::seconds>(z_hours). Результирующее rvalue `rhs`
      // имеет тот же тип, что и `lhs`, а `operator=`, наконец, выполняет присваивание.

    std::cout << "часы: " << z_hours.count() << '\n';
    std::cout << "секунды: " << z_seconds.count() << '\n';

    z_seconds -= 42s;

//  z_hours = z_seconds; // ошибка времени компиляции (что хорошо): несовместимые типы.
    // Библиотека избегает неявного приведения, чтобы
    // предотвратить потенциальную потерю точности.
    z_hours = std::chrono::duration_cast<std::chrono::hours>(z_seconds); // ok
    z_hours = std::chrono::duration_cast<decltype(z_hours)>(z_seconds); // то же самое

    std::cout << "часы: " << z_hours.count() << '\n';
    std::cout << "секунды: " << z_seconds.count() << '\n';

    std::chrono::duration<double, std::ratio<3600>> z2_hours{};

    z2_hours = z_seconds; // ok, без усечения, неявное приведение

    std::cout << "часы: " << z2_hours.count() << '\n';
}

Вывод:

часы: 2
секунды: 7200
часы: 1
секунды: 7158
часы: 1.98833

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

строит новый duration
(public функция-элемент) [править]