Как получить std :: chrono :: system_clock :: time_point из std :: chrono :: system_clock :: time_point.time_since_epoch (). Count ()? - PullRequest
0 голосов
/ 13 января 2019

У меня есть переменная, хранящаяся как long значение от std::chrono::system_clock::time_point.time_since_epoch().count(). Теперь я хотел бы восстановить это std::chrono::system_clock::time_point из переменной long. Так как же я могу преобразовать long в std::chrono::system_clock::time_point?

1 Ответ

0 голосов
/ 13 января 2019

Сначала необходимо преобразовать целочисленный тип в chrono::duration, а затем преобразовать duration в system_clock::time_point. Но есть одна загвоздка:

duration это шаблон:

template <class Rep, class Period> class duration;

Если вы преобразуете целочисленный тип в неправильный duration, вы получите неправильный time_point.

К счастью system_clock сам говорит вам правильный duration с его вложенным типом duration: system_clock::duration. Кроме того, каждое из этих преобразований является explicit.

Итак, в итоге:

using namespace std::chrono;
system_clock::time_point tp{system_clock::duration{i}};
...