C++26 中的新内容(第 1 部分)是什么?

主要观点:C++26 标准版本在推进中,已添加一系列语言和库特性,部分已被 Clang 和 GCC 支持,文中介绍了 C++26 的几个特性。
关键信息:

  • 指定删除函数的原因:C++11 可声明删除函数,C++26 可指定删除原因,如NonCopyable类中复制构造函数和赋值运算符的删除原因说明,可帮助 API 作者提供更定制化的删除函数消息。详见P2573R2: = delete(“should have a reason”);
  • 无名占位变量:在某些情况下需声明变量但不使用其名,如结构绑定、锁等,C++26 可用单下划线_定义无名变量,在特定情况下会隐式添加[[maybe_unused]]属性,且声明为_的变量在不同存储期限等情况下有不同规定,详见P2169: A nice placeholder with no name
  • 结构化绑定声明作为条件:结构绑定可用于 for-range 声明等,C++26 可在ifwhilefor语句条件中声明结构绑定,如在使用std::to_chars时可简化代码,详见P0963: Structured binding declaration as a condition
  • 用户生成的 static_assert 消息static_assert的第二个参数现在可以是编译时用户生成的类似字符串对象,如使用假设的constexpr std::format,详见P2471R3: user-generated static_assert messages
阅读 16
0 条评论