如果之前已询问过此问题,我无法在线找到它,我表示歉意。为什么编译器认为我试图调用std::condition_variable
的拷贝构造函数?创建条件变量的共享指针时的问题
#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
“make_shared”的参数用于构造对象。在你的情况下,你传递一个临时的匹配复制构造函数签名。 – Arunmu
@Arunmu实际上,它匹配移动构造函数signsture – UldisK
@UldisK对于condition_variable没有'移动构造函数'。 – Arunmu