我关注this tutorial使用C ++ 11线程。以下代码:
#include <iostream>
#include <string>
#include <thread>
#include <future>
void theFun(std::promise<std::string> && prms)
{
std::string str("Hellow from future");
prms.set_value(str);
}
int main(int argc, char* argv[])
{
std::promise<std::string> prms;
std::future<std::string> ftr = prms.get_future();
std::thread tr(&theFun,std::move(prms));
std::cout << "Hellow from main!" << std::endl;
std::string str = ftr.get();//will block if thread still working
std::cout << str << std::endl;
tr.join();
}
适用于教程作者。他正在使用VS2010和一些实验实现。但在我的情况下,我收到以下错误:
\ program files(x86)\ microsoft visual studio 12.0 \ vc \ include \ functional(1149):错误C2664:&#39; void(std :: promise&amp;&amp;)&#39; :无法转换参数1 &#39;的std ::诺&#39; to&#39; std :: promise&amp;&amp;&#39; 1 GT;
您不能将左值绑定到右值引用
这是否意味着VC2013不支持Rvalue参数?