Namespaces
Variants

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

From cppreference.net
duration & operator = ( const duration & other ) = default ;
(C++11 이후)

duration 의 내용을 다른 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)를 호출합니다.
    // 결과로 생성된 `rhs` rvalue는 `lhs`와 동일한 타입을 가지며, `operator=`가 최종적으로 할당을 수행합니다.
    std::cout << "hours: " << z_hours.count() << '\n';
    std::cout << "seconds: " << 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 << "hours: " << z_hours.count() << '\n';
    std::cout << "seconds: " << z_seconds.count() << '\n';
    std::chrono::duration<double, std::ratio<3600>> z2_hours{};
    z2_hours = z_seconds; // ok, 잘림 없음, 암시적 캐스트
    std::cout << "hours: " << z2_hours.count() << '\n';
}

출력:

hours: 2
seconds: 7200
hours: 1
seconds: 7158
hours: 1.98833

참고 항목

새로운 duration을 생성
(public member function)