std::chrono::duration::operator=
De cppreference.com
duration& operator=( const duration &other ) = default;
|
(desde C++11) | |
Asigna el contenido de un objeto std::duration a otro.
Parámetros
| other | - | Objeto duration del que copiar.
|
Ejemplo
Ejecuta este código
#include <iostream>
#include <chrono>
int main()
{
using namespace std::chrono_literals;
std::chrono::hours z_hours{};
std::chrono::seconds z_seconds{};
z_hours = 2h; // de acuerdo, no se necesita conversión
z_seconds = z_hours;
// Primero, el ctor de conversión se usa para crear un objeto temporal del tipo
// de `lhs`. Este ctor implícitamente invoca la función de conversión
// chrono::duration_cast<std::seconds>(z_hours). El valor `rhs` resultante
// tiene el mismo tipo que `lhs`, y finalmente `operator=` ejecuta la asignación.
std::cout << "horas: " << z_hours.count() << '\n';
std::cout << "segundos: " << z_seconds.count() << '\n';
z_seconds -= 42s;
// z_hours = z_seconds; // ERROR en tiempo de compilación (que es bueno):
// tipos incompatibles.
// La biblioteca evita la conversión implícita para evitar una posible pérdida de precisión.
z_hours = std::chrono::duration_cast<std::chrono::hours>(z_seconds); // de acuerdo
z_hours = std::chrono::duration_cast<decltype(z_hours)>(z_seconds); // ditto
std::cout << "horas: " << z_hours.count() << '\n';
std::cout << "segundos: " << z_seconds.count() << '\n';
std::chrono::duration<double, std::ratio<3600>> z2_hours{};
z2_hours = z_seconds; // de acuerdo, no hay truncamiento, conversión implícita
std::cout << "horas: " << z2_hours.count() << '\n';
}
Salida:
horas: 2
segundos: 7200
horas: 1
segundos: 7158
horas: 1.98833
Véase también
| Construye una nueva duración. (función miembro pública) |