随着移动语义的出现,我想知道在临时创建的对象能够在移动语义的帮助下传递所有权之后,King 在他的 dlib 库中实现的这种特定模板技术是否仍然有用,或者我在这里遗漏了什么?
问问题
81 次
2 回答
1
表达式模板技术不仅仅是避免复制。例如,编译器可以进行符号线性代数以将整个表达式转换为更有效地执行代码。许多这些转换与避免复制无关。
于 2016-07-12T12:38:34.340 回答
0
从这里:
只有在没有为类类型(结构、类或联合)提供用户定义的移动构造函数并且以下所有条件都为真时,编译器才会自动创建默认移动构造函数:
- 没有用户声明的复制构造函数;
- 没有用户声明的复制赋值运算符;
- 没有用户声明的移动赋值运算符;
- 没有用户声明的析构函数;
- 由于下一节中详述的条件,隐式声明的移动构造函数未定义为已删除,
这就是为什么 Dlib 在其容器中有很多明确定义的移动构造函数(array2d,DNN 模块......)
于 2016-07-12T06:29:59.183 回答