Я пытаюсь использовать пользовательский класс с оператором преобразования при вызове std::this_thread::sleep_until
.Вот код, который я использую:
class A
{
public:
...
operator std::chrono::time_point<std::chrono::system_clock>() const {
return std::chrono::time_point<std::chrono::system_clock>{} +
std::chrono::duration_cast<std::chrono::system_clock::duration>(timestamp_); }
private:
std::chrono::nanoseconds timestamp_;
};
A a;
std::this_thread::sleep_until(a); // This doesn't compile (note the overload with time_point).
std::this_thread::sleep_until((std::chrono::time_point<std::chrono::system_clock>)a); // But this does.
Ошибка компилятора error C2664: 'void std::this_thread::sleep_until(const xtime *)': cannot convert argument 1 from 'A' to 'const xtime *'
.
Может кто-нибудь дать мне подсказку, что я делаю здесь неправильно и как это должно быть сделано правильно