1.2现代c++中对类型处理能力的演进

c++在演进过程中逐渐增强和扩展了对类型处理的能力

在c++11中

  • 引入了右值引用,从而通过重新定义值类别(value category)来对表达式进行分类,右值引用能够表达移动语义,解决了传统c++产生的中间临时变量需要多次拷贝的问题
  • 引入了强枚举类型特征,约束了枚举值的域,同时不允许隐式转换成数值类型,也不允许不同枚举类型之间进行比较
  • 放松了对union特性的约束,使其能够与非平凡类组合,增强了实用性
  • 引入了auto关键字,对初始化变量类型进行推导,减轻了程序员需要手写复杂类型(诸如迭代器类型)的负担
  • 引入了decltype特性,通过已有对象,变量获取其类型,解决了难以声明一个对象的类型(诸如lambda对象类型)的问题
  • 引入了nullptr_t类型,避免了整数类型与指针类型导致的重载歧义问题

在c++17中

  • 引入了variant作为类型安全的union,使这些类型的表达变得更容易,更正确
  • 引入了optional类型来表达一个对象是否存在的概念

在c++20中

  • 引入了concept特性来对类型做约束,如此无论是在代码角度上,还是从编译错误信息的角度上,都更加可读

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

9人评论了“1.2现代c++中对类型处理能力的演进”

滚动至顶部