5

我有

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

我想将它传递给使用通用类型的时间点的函数。我不想指定使用的时钟的分辨率或类型。

我试过使用

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

但没有成功。因为显然 std::chrono::time_point 不是一种类型。

4

1 回答 1

6

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);
于 2012-11-19T11:40:10.263 回答