chrono_treat_as_floating_point

chrono_treat_as_floating_point (부동소수점 특성)

std::chrono::treat_as_floating_point는 기간(duration)의 Rep 타입이 부동소수점처럼 처리되는지 판별하는 특성(trait)이에요.

출처: cppreference

본문

std::chrono::treat_as_floating_point<chrono> 헤더에 정의된 클래스 템플릿이에요. C++11부터 사용 가능해요.

template< class Rep >
struct treat_as_floating_point : std::is_floating_point<Rep> {};

기간이 다른 틱 주기의 기간으로 변환될 수 있는지 판단하는 데 도움을 줘요. Rep가 부동소수점이면(즉 이 특성이 true면) 정밀도 손실 없이 암시적 변환이 허용돼요. Rep가 정수 타입이면(= false) 정밀도 손실이 있을 수 있어 명시적 변환이 필요해요.

std::chrono::duration의 암시적 변환 연산자는 treat_as_floating_point<Rep>::valuetrue일 때 혹은 틱 주기가 나누어떨어질 때 허용돼요.

예제 (Example)

#include <chrono>
#include <iostream>

int main()
{
    std::cout << std::chrono::treat_as_floating_point_v<double> << '\n'; // 1
    std::cout << std::chrono::treat_as_floating_point_v<int> << '\n';    // 0
}

더 알아보기 (Learn more)

cppreference