#include <iostream>
#include <memory>
#include <future>
using namespace std;
unique_ptr<int> uq(new int);
void foo(unique_ptr<int> q)
{}
int main()
{
foo(move(uq));
// ^ OK
async(foo, move(uq));
// ^ Error: error C2248: 'std::unique_ptr<_Ty>::unique_ptr' :
// cannot access private member declared in class 'std::unique_ptr<_Ty>'
}
为什么“异步”无法编译?我使用 Microsoft Visual Studio 2012 (v4.5.50709)。