
#include <iostream>#include <utility>#include <vector>#include <memory>#include <condition_variable>using namespace std;class A { public: A() = default; A(A&&) = default; A& operator=(A&&) = default; A(const A&) = delete; A& operator=(const A&) = delete;};int main() { std::vector<std::shared_ptr<std::condition_variable>> m; m.push_back(std::make_shared<std::condition_variable>(std::condition_variable{})); // no complains here std::vector<std::shared_ptr<A>> m_a; m_a.push_back(std::make_shared<A>(A{})); return 0;} 我得到的错误是我正在尝试使用std :: condition_variable的已删除的复制构造函数.我想我想问的是为什么不使用make_shared的调用调用移动构造函数
解决方法 在std::make_shared<std::condition_variable>(std::condition_variable{}) std :: condition_variable {}创建一个std :: condition_variable.这意味着std :: make_shared将使用传递的参数构造它的内部std :: condition_variable,该参数调用复制构造函数.如果您需要一个默认构造的std :: condition_variable,那么您可以使用
std::make_shared<std::condition_variable>()总结
以上是内存溢出为你收集整理的c – 创建条件变量的共享指针时出现问题全部内容,希望文章能够帮你解决c – 创建条件变量的共享指针时出现问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)