VC ++ 2013 std :: move和rvalue编译错误

时间:2015-01-07 15:03:13

标签: c++ c++11

我关注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参数?

0 个答案:

没有答案