转换运算符不适用于sleep_until
Conversion operator doesn't work with sleep_until
我尝试在调用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 *'
。
谁能给我一个提示,我在这里做错了什么以及如何正确地完成?
std::this_thread::sleep_until
是一个函数模板。在模板参数扣除期间,将不考虑转换。
转换发生在扣除完成后。因此,如果不显式调用转换运算符,则转换运算符不起作用。
相关文章:
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- 是否可以仅使用标准 c++/c++11 实现不带"sleep"的计时器?
- 在定时器回调函数中使用 Sleep() 会导致C++出现问题吗?
- 为什么Main函数上的Sleep()会停止所有线程
- Windows.h Sleep(int) 函数是否浪费?
- 在Xcode(mac api)上,是否有任何带有Sleep()函数/命令的文件?
- Sleep() vs sleep_for()
- Win32 Sleep()游戏循环中的精度
- C++ - 在 main() 方法内的类实例中创建一个线程并调用 Sleep()
- 通过创建一个决定使用哪种产品来互换使用Sleep和usleep
- 线程中的 sleep() 函数的目的是什么?
- 为什么函数 sleep() 在 klee 执行 Objectfile 时不能工作?
- Win32 中的 Sleep() 使程序无响应
- sleep() 在 gmock 的EXPECT_CALL内调用
- 随机打印程序,尽管 sleep() 功能,一次打印多个输出
- 当进程结束时,处于Sleep()中间的线程会发生什么
- C++函数 Sleep() 在一段代码之前执行
- 为什么sleep in函数忽略了程序中的几个顺序指令
- lldb/gdb 有什么问题,忽略 OS X 中的第一个 sleep() 语句?
- 具有可视C++的窗口窗体应用程序中的 Sleep()