我在 MSVC 2012 中遇到了右值引用的问题。
#include <thread>
#include <string>
#include <future>
void foo(std::promise<std::string> &&prms) { /* some code */ }
int main() {
std::promise<std::string> prms;
// std::future<std::string> ftr = prms.get_future();
std::thread th(&foo, std::move(prms));
// some other code
}
编译器说:错误 C2664: 'void (std::promise<_Ty> &&)' : 无法将参数 1 从 'std::promise<_Ty>' 转换为 'std::promise<_Ty> &&'
是否有我的错误(然后如何解决它)或编译器问题(然后我想知道这种行为的起源)?