1. 版本11

  1. auto 关键字 可以根据代码自动推导变量的类型。这个推导过程是在编译过程中完成的,因此必须让编译器能够推导出具体类型。11中只支持lambda返回类型的推导
  2. decltype 关键字

    decltype(exp); 其中,exp 表示一个表达式(expression)。如果表达式是变量,返回变量的类型。如果是函数,则返回函数的返回值的类型。 用法示例:

    int x = 0;
    decltype(x) y = 1; // y -> int
    
  3. nullptr 字面值 字面值是指在程序中无需变量保存,可直接表示为一个具体的数字或字符串的值。例如x+=2中的2就是字面值。新增了nullptr用于初始化指针。
  4. constexpr 关键字 被该关键词修饰的变量会在编译阶段就完成计算并像宏定义一样完成替换。例如
    constexpr int i = 9*8;
    int y = i+5;
    int z = i+6;
    

    会在编译后被替换为

    constexpr int i = 9*8;
    int y = 72+5;
    int z = 72+6;
    

    从而降低了在程序运行中的计算资源消耗。

  5. Lambda表达式
  6. for(declaratin : expression)
  7. 初始化列表
  8. bind函数
  9. 智能指针 “shared_ptr”, “unique_ptr”
  10. 右值引用
  11. stl容器
    • array
    • forward_list
    • unordered_map
    • unordered_set

2. 版本14

  1. auto 的可用于任意函数的返回类型推导

3. 版本17

  1. 初始化对象时,可用“{}”对成员赋值
  2. 内联变量(inline variables) 可以在头文件中定义内联变量,而不会导致重复定义。
  3. if和switch中可进行初始化 代码示例:
    if(int x=42; x>0)
    {}
    

    其中“x”仅在if和对应的else语句块中可见。在while语句中类似

    while(int x=42; x<0)
    {
      x--;
    }
    

    4. 版本20