use*_*061 3 c++ constructor type-inference
能够在我的代码库中轻松地对搜索某些对象的构造函数的地方进行文本搜索会很高兴.这是模式波纹管.而不是经典:
Object val( a, b );到处使用会很好:
auto val = Object( a, b );这样我就可以使用简单的文本搜索"Object("并获取我调用构造函数的地方列表Object.它的语法也不那么模糊,因此更容易制作简单的工具来自动化一些代码转换.它优雅地避免了"最令人烦恼的解析"问题.
我唯一担心的是对性能可能产生的影响.案例2)和案例1)一样快吗?(如果我们可以假设Object已经正确定义了移动构造函数和移动赋值运算符并且启用了基本的编译器优化.)
在C++ 17之前,尽管不太可能,但由于额外的复制或移动,您可能会受到性能损失.即使C++ 98允许实现删除这些副本,即使它们会产生副作用,并且几乎所有编译器都已经实现了这种优化很长时间 - 特别是在优化的构建中.
Post C++ - 17,保证了复制省略.您甚至不需要复制或移动构造函数来实现此功能,因此您不应该看到任何差异.
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |