C++ 我可以将wait_until转换为wait_以便立即使用()吗?

C++ 我可以将wait_until转换为wait_以便立即使用()吗?,c++,c++11,chrono,C++,C++11,Chrono,我正在实现我自己的Future类,它构建在第三方等待函数thirdPartyWait(int毫秒)之上。我希望我的Future接口与std::Future兼容,这意味着我希望同时提供wait\u for和wait\u to wait\u for很容易,因为它直接映射到第三方wait(我可以处理它内部毫秒的转换)。但是,等待_,直到映射得不太好。凭直觉,我认为以下几点应该是我想要的: template <class Clock, class Duration> std::future_

我正在实现我自己的
Future
类,它构建在第三方等待函数
thirdPartyWait(int毫秒)
之上。我希望我的
Future
接口与
std::Future
兼容,这意味着我希望同时提供
wait\u for
wait\u to

wait\u for
很容易,因为它直接映射到第三方wait(我可以处理它内部毫秒的转换)。但是,
等待_,直到
映射得不太好。凭直觉,我认为以下几点应该是我想要的:

template <class Clock, class Duration>
std::future_status wait_until(const std::chrono::time_point<Clock, Duration> &timeout) const
{
  return wait_for(timeout - Clock::now());
}
模板
标准::未来状态等待直到(常数标准::计时::时间点和超时)常数
{
返回wait_for(timeout-Clock::now());
}
我已经对代码进行了测试,它是有效的,但是我很清楚一个简单的测试并不能涵盖所有的情况。我对
std
chrono
部分不太熟悉,因此我的问题是:


在我的
wait_until
实现中是否存在任何隐藏的陷阱,或者我是否可以期望它按预期工作?

cppreference对
std::future::wait_until
有这样的说法:

使用与超时时间相关的时钟,该时钟不要求是单调时钟。如果不连续地调整时钟,则无法保证该函数的行为,但是现有的实现将timeout_时间从时钟转换为std::chrono::system_时钟,并将其委托给POSIX pthread_cond_timedwait,以便等待执行对系统时钟的调整,而不是对用户提供的时钟的调整。在任何情况下,由于调度或资源争用延迟,函数也可能等待超过超时时间

从中我推断当前的实现与您所做的完全一样


如果
Clock::rep
未签名且
timeout
已在过去,会发生什么情况?