是否可以使用具有 0 个参数的模板 lambda 来调用
std::async
?谢谢
*
#include <future>
#include <array>
int main() {
auto func = []<int n>() {
std::array<double, n> arr;
};
func.operator()<5>(); // This compiles
std::async(func.operator()<5>); // This doesn't compile
return 0;
}
根据您的意图用其中任何一个替换有故障的线路
std::async([&func] { func.operator()<5>(); }); //lambda remains withing its original scope
std::async([f =func] { f.operator()<5>(); }); //lambda is copied
std::async([f =std::move(func)] { f.operator()<5>(); }); // lambda is moved into the async's function inner scope
函数对象不能通过点绑定到它的第一个参数,它不是 Python ;-)