我有这个与线程一起工作的简单程序。在 Clang 中,我得到了一堆令人困惑的无关错误。这是程序:
#include <iostream>
#include <thread>
#include <future>
int main()
{
std::packaged_task<int()> task([] { return 1; });
std::future<int> result = task.get_future();
task();
std::cout << "Result was: " << result.get();
}
错误:
std::chrono::duration<long, std::ratio<1, 1000000> >
错误:没有用于初始化“持续时间”(又名“ ”)的匹配构造函数:_d ('std::chrono::time_point<std::chrono::system_clock, std::chrono::duration<long, std::ratio<1, 1000000> > >::time_point<std::chrono::duration<long, std::ratio<1, 1000000000> > >'
_t.time_since_epoch())注意:在此处请求的函数模板特化的实例化中
还有更多,但您可以在程序的这个链接中看到它。奇怪的是,它在 g++ 4.7.3 和 4.6.3 中编译得很好。为什么这只发生在 Clang 中?
更新:正如大卫指出的那样,当我包含<future>
标题时,它似乎只是失败了。