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>::value가 true일 때 혹은 틱 주기가 나누어떨어질 때 허용돼요.
예제 (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
}