Как я могу заставить c ++ chrono stable_clock перестать возвращать времена system_clock?

Я писал класс, который имел дело с дополнительными временными ограничениями для определенных методов, и поэтому он берет классы из std::chrono Пространство имен, чтобы указать, как определить время. Я пытался проверить этот метод, который должен истечь, как только он проходит заданный time_point:

template <typename Clock, typename Rep, typename Per>
class Foo
{
public:
bool bar(const std::chrono::time_point<Clock, std::chrono::duration<Rep, Per>>&);
};

После моей первой неудачной попытки вызова метода я понял, что должен использовать std::chrono::time_point_cast, Вызов метода выглядит так:

Foo<std::chrono::steady_clock, long long, std::milli> obj;
obj.bar(std::chrono::time_point_cast<std::chrono::duration<long long, std::milli>(std::chrono::steady_clock::now()));

Я получаю эту ошибку IntelliSense:

IntelliSense: no suitable user-defined conversion from "std::chrono::time_point<std::chrono::system_clock, std::chrono::duration<long long, std::milli>>" to "const std::chrono::time_point<std::chrono::steady_clock, std::chrono::duration<long long, std::milli>>" exists

Когда я пытаюсь скомпилировать его, я получаю:

error C2664: 'Foo<Clock,Rep,Per>::bar' : cannot convert parameter 1 from 'std::chrono::time_point<_Clock,_Duration>' to 'const std::chrono::time_point<_Clock,_Duration> &'

Понятия не имею почему, но time_point вернулся steady_clock это точка времени, которая использует system_clock вместо. Я даже специально установил time_point_cast использовать steady_clockи это до сих пор всегда дает мне system_clock, Это действительно раздражает, учитывая, что теперь класс полностью непригоден, когда steady_clock используется вместо system_clock, Если steady_clock а также system_clock фактически одно и то же, есть ли какой-то способ, которым мне не хватает, чтобы конвертировать время между двумя?

Изменить: я использую Visual Studio Professional 2012. Кроме того, он появляется steady_clock происходит от system_clockХотя это, кажется, не помогает в данный момент.

1

Решение

Задача ещё не решена.

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


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector