4
我用std::packaged_task
做了一些測試,發現了這個問題。C++無法在std :: pair中將lambda轉換爲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)>> &)
':無法從'main::<lambda_abbe6cccb9110894d95e872872ec1296>
' 轉換參數2 'const std::packaged_task<int (void)> &
'
然而,這編譯:
std::vector<std::packaged_task<int()>> v;
v.emplace_back([](){ return 1; })
爲什麼我無法創建pair
?