【发布时间】:2015-07-09 10:28:53
【问题描述】:
我用std::packaged_task 做了一些测试,遇到了这个问题。
std::packaged_task<int(void)> task([]() -> int { return 1; });
task();
编译并调用 task() 调用 lambda。但是,这不会编译:
std::pair<int, std::packaged_task<int(void)>> pair(15, []() -> int { return 15; });
pair.second();
因为
错误 C2664:“
std::pair<int,std::packaged_task<int (void)>>::pair(const std::pair<int,std::packaged_task<int (void)>> &)”:无法将参数 2 从“main::<lambda_abbe6cccb9110894d95e872872ec1296>”转换为“const std::packaged_task<int (void)> &”
但是,这确实可以编译:
std::vector<std::packaged_task<int()>> v;
v.emplace_back([](){ return 1; })
为什么我不能创建pair?
【问题讨论】: