下編譯沒有錯誤:返回布展僅式編譯即使拷貝構造函數是不可用
#include <memory>
std::unique_ptr<int> f() {
std::unique_ptr<int> x(new int(42));
return x;
}
int main() {
std::unique_ptr<int> y = f();
}
我認爲的f()
返回值被x
複製初始化,但std::unique_ptr
是MOVE-只有類型。這是不是因爲複製構造函數不可用而不合格?標準中的相關條款是什麼?有沒有什麼地方說,如果f()
是一種只能移動的類型而不是返回語句變成移動結構而不是複製結構?
不知道,如果它是一個重複的[C++返回值優化(HTTP: //stackoverflow.com/questions/19454068/c-return-value-optimization)。 – iammilind 2015-02-09 13:15:03
@iammilind:不是。 – 2015-02-09 13:19:06
http://stackoverflow.com/questions/4316727/returning-unique-ptr-from-functions – vsoftco 2015-02-09 13:22:09