如果之前已詢問過此問題,我無法在線找到它,我表示歉意。爲什麼編譯器認爲我試圖調用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