下面是示例代碼:傳遞的unique_ptr右值引用結果編譯錯誤
using namespace std;
struct A {
A(unique_ptr<int> s)
: _s(move(s)){}
unique_ptr<int> _s;
};
int main(int argc, const char * argv[]) {
auto&& ptr = make_unique<int>(5);
A a{ptr}; // Error
A b{move(ptr)}; // OK
return 0;
}
我的第一個猜測是,應該不使用「移動」的工作,但我得到「呼叫隱式刪除,拷貝構造函數」的鏗鏘。也許'ptr'的類型不是右值(奇怪?)?有人能澄清一下嗎?
的可能的複製[我如何通過一個獨特的\ _ptr參數構造函數或一個函數?](https://stackoverflow.com/questions/8114276/how-do-i-pass-a-unique-ptr-argument-to-a-constructor-or-a-function) – acraig5075