C++17新特性

C++17

维基百科

C++17又称C++1z,是C++的现行标准的非正式名称,正式名称为"International Standard ISO/IEC Programming Language C++"。C++17旨在作为大型扩展,最终的投票期将于2017年结束。

当前不少著名C++编译器已支持C++17仍未定案的草案(draft),例如最新的GCC6已支持C++ concept的C++事务型内存(Transactional Memory),Visual Studio与Clang当前都提供了modules。

新功能

  • 静态断言static_assert无需提供出错信息[1]
  • 新增std::basic_string_view, 对外部字符串或字符串片断(string-slice)的引用[2]
  • 移除 trigraphs[3][4]
  • 具有模板形式的模板(template template)参数允许使用 typename(之前仅允- 许使用 class)[5]
  • auto之新规定并简化在括弧内初始化的定义[6][7]
  • 嵌套的 namespace的定义[7][8]
  • std::uncaught_exceptions 取代 std::uncaught_exception[9][10]
  • 支持UTF-8字符[10][11]
  • 变长参数模板的Folding运算[10][12]
  • 为 std::map 与 std::unordered_map增加了基于结点的插入操作[13][14]
  • 容器访问操作表示方法的统一化(Uniform container access)[14][15]
  • 连续型迭代器(Contiguous Iterators)[14][16]
  • if与switch语句内的初始化
  • 基于boost::filesystem新增处理文件路径的std::filesystem[17]
  • 具有并行处理功能的STL 算法[18]
  • 新增特殊数学函数[19]
  • 引进Library Fundamentals TS I中的内容[20]
  • std::variant,可作为类型安全(type-safe)的联合所使用的容器(union container)
  • 编译期静态确定的 if判断式if constexpr(expression)
  • 结构化绑定,允许auto [a, b] = getTwoReturnValues();
  • 简化模板之构造函数,例如允许以pair(5.0, false) 取代pair(5.0, false)
  • 内联式(Inline)变量,允许在头文件(header files)声明变量

你可能感兴趣的:(C/C++)