對於Visual Studio 2015是否支持生成默認移動構造函數,似乎存在衝突的文檔。默認移動構造函數Visual Studio 2015
This link和this link似乎說不,而this link說是的。
我想簡單的東西:
class Test {
public:
Test(int data) : data(data) {}
Test(Test&& other) = default;
Test(Test& other) = delete;
int data;
};
int main() {
Test c(3);
std::cout << c.data << std::endl;
Test b(std::move(c));
std::cout << b.data << std::endl;
}
它打印出3,3預期。我是否犯了一些錯誤或者是實際生成的默認移動構造函數?
編輯:刪除了「隱性」的措辭
在此示例中,您明確要求默認的移動和複製構造函數,即它們不是隱式生成的,所以如果要測試隱式生成的構造函數,那麼程序不會這樣做。 –
錯誤是的,不需要「隱式」部分,我只想知道是否支持默認移動構造函數,我將編輯該問題。 – newprogrammer
第二個鏈接似乎是說[是](https://msdn.microsoft.com/en-us/library/hh567368.aspx#tableguide):*「」Rvalue references v3.0「添加了新的規則來自動生成移動構造函數和移動賦值操作符,這在Visual Studio 2015中實現。「* –