супертип std :: chrono, передача аргументов функции

я имею

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

и я хочу передать его функции, использующей общий тип для момента времени. Я не хочу указывать разрешение или тип используемых часов.

Я пытался использовать

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

но без успеха. Поскольку, очевидно, std :: chrono :: time_point не является типом.

0

Решение

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);
3

Другие решения

Других решений пока нет …