【发布时间】:2016-01-22 07:30:16
【问题描述】:
关于 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。我犯了一些错误还是实际上生成了默认的移动构造函数?
编辑:删除“隐含”措辞
【问题讨论】:
-
在示例中,您明确要求默认的移动和复制构造函数,即它们不是隐式生成的,因此如果您想测试隐式生成的构造函数,那么您的程序不会这样做。
-
呃,是的,“隐式”部分不需要,我只想知道是否支持默认移动构造函数,我将编辑问题。
-
第二个链接好像是说Yes: ""Rvalue references v3.0" 增加了新规则,在一定条件下自动生成移动构造函数和移动赋值运算符。这个在Visual中实现工作室 2015。”
标签: c++ visual-studio visual-studio-2015