C++ std::填充右值,它是否只支持按副本填充?
给定std::futures的std::vector 我的意思是,fill\n没有收到xvalue吗?如果没有,为什么不?std::fill\n复制作为第三个参数传递的给定对象,但第三个参数是不可复制的未来对象,因为复制未来对象没有意义。因此出现了错误 看来你需要这个:C++ std::填充右值,它是否只支持按副本填充?,c++,C++,给定std::futures的std::vector 我的意思是,fill\n没有收到xvalue吗?如果没有,为什么不?std::fill\n复制作为第三个参数传递的给定对象,但第三个参数是不可复制的未来对象,因为复制未来对象没有意义。因此出现了错误 看来你需要这个: std::generate_n(std::back_inserter(futures), 10, []{ return std::async([]{ std::
std::generate_n(std::back_inserter(futures),
10,
[]{ return std::async([]{ std::cout << "yo\n"; }); });
其界面为:
然后它复制值计数时间。这就是为什么你会犯错误。虽然,即使它移动了,填充作为一种功能选择也没有意义。。。你会从同一个未来移动10次,所以你会得到一个有效的未来和9个空的未来?那有什么意义呢?你还指望什么?要反复移动的输入?那怎么办?
std::fill_n(std::back_inserter(futures), 10, std::async([]{ std::cout << "yo\n"; }));
error: use of deleted function future(const future&)
std::generate_n(std::back_inserter(futures),
10,
[]{ return std::async([]{ std::cout << "yo\n"; }); });
template< class OutputIt, class Size, class T >
OutputIt fill_n( OutputIt first, Size count, const T& value );