std::chrono::duration<Rep,Period>:: operator=
From cppreference.net
C++
Date and time library
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::chrono::duration
| Member functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Non-member functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Helper classes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
duration
&
operator
=
(
const
duration
&
other
)
=
default
;
|
(начиная с C++11) | |
Присваивает содержимое одного
duration
другому.
Параметры
| другой | - |
duration
для копирования
|
Пример
Запустить этот код
#include <chrono> #include <iostream> 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 member function) |