2012-11-19 3 views
0

내가표준 : 크로노 슈퍼,

auto now = std::chrono::high_resolution_clock::now(); 

이 있고 난 시점에 대한 일반적인 형식을 사용하여 함수에 전달하려는 전달 함수 인수. 내가 사용하는 해상도 나 유형을 지정하고 싶지는 않습니다.

나는

void my_function(std::chrono::time_point time_point); 

하지만 성공없이 사용하여 시도했습니다. 분명히 std :: chrono :: time_point는 타입이 아닙니다.

+0

무엇을하려고합니까? –

+0

사용하고자하는 '해상도'나 '클럭 유형'에 의존하지 않는 'time_point' 인터페이스의 어떤 부분을 정확히 사용하고 있습니까? –

답변

3

std::chrono::time_point은 적어도 clock 템플릿 매개 변수가 필요한 템플릿 기반 클래스입니다.

중 하나를 명시 적으로

void my_function(std::chrono::time_point<std::chrono::high_resolution_clock> time_point); 

처럼 시계를 설정 또는 당신은 함수 템플릿 자체를 할 수 있습니다 : 당신이 실제로 템플릿 매개 변수를 지정할 필요가 없습니다 지난 경우

template<typename Clock> 
void my_function(std::chrono::time_point<Clock> time_point); 

을 함수를 호출 할 때 컴파일러에서 알아낼 수 있습니다.

my_function(now); 
+0

예, 함수를 템플릿으로 만드는 것이 유일한 옵션입니다. 그건 그렇고, 다른 시계와 두 개의 서로 다른 time_points 빼는 것은 (그리고 time_points가 추가되지 않으면 어떻게 될까요?) – user1433688