繁体   English   中英

仅移动类型的back_inserter

[英]back_inserter for move-only type

在以下代码中,对象“队列”是不可复制的,但由于std :: mutex而可移动。

std::generate_n(std::back_inserter(thread_pool),
                std::thread::hardware_concurrency,
                [&](){return std::thread(handler(), exiting, queue);});

VC ++ 2012由于互斥锁上的私有副本构造函数而无法编译。 无法生成队列的副本构造函数。 为什么会有什么东西试图复制队列? 在我看来,所有内容都在参考中,因此没有副本。

正在尝试通过按值将queue传递给std::thread构造函数来复制queue 如果要传递引用,请使用包装器: std::ref(queue)

如果您真的想将queue移入std::thread ,则需要传递std::move(queue)使其成为右值。 但是由于VS中的错误,它仍然无法正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM