南方都市报
但一门语言从早期设计走向成熟标准,涉及的内容远远超过某个人能够独立完成的范围。语法规则、类型系统、模板、异常、并发、标准库、编译器行为和兼💯容性都需要长期讨论。C++11、C++14、C++17 以及后续标准,都是在既有成果上不断修订和扩展的结果。
C++17 引入了多项开发者经常使用的语言和库功能。例如,结构化绑定让程序可以更方便地拆解返回值和聚合对象;if 📌constexpr 改善了模板代码中的条件分支;折叠表🔍达式简化了可变参数模板的处理;内联变量解决了部分头文件定义和链接方面的问题。
因此,一项功能可能有明确的提出者,但最终进入标准时,往往已🎇经经过多轮修改。提案作者提供了重要起点,其他参与者则共同决定它是否成熟、如何表述以及怎样与整个语言生态兼容。
需要先澄清的是,“17c.c++”并不是 C++ 标准的正式写法。技术资料中通常写作“C++17”,它指的是 C++ 在 2017 年发布的一代语言标准。因此,“并非一人之笔”强调的是 C++17 的形成过程,而不是在说明某个具体源代码文件的作者数量。
C++ 的早期设计与 Bjarne Stroustrup 密切🔍相关。他在 C 语言基础上吸收了 Simula 等语言的面向对象思想,逐步设计并发展出 C++。从语言历史的角度看,把他称为 C++ 的主要创始人或最初设🎯计者是合理的。
这些功能背后通常都有具体提案和主要贡献者,但从“某个功能的设计者”推导出“C++17整套标准的唯一作者”并不准确。功能之间需要保持统一的命名风格、生命周期规则、异常约定和泛型接口,这些协调工作本身就需要集体审查。
因此,“17c.c++:并非一人之笔”更准确的解释是:C++17 有清晰的历史设计脉络,也有具体贡献者,但它最终是一份经过提案、讨论、实现、审查和正式采纳的集体成果。把个人贡献与社区协作同时看见,才😎是理解 C++17 来源的完整方式。
在标准库方面,std::optional 用于表达“可能没有值”的结果,std::variant 提供了类型安全的多类型存储,std::any 适合保存类型在运行时才确定的对象,std::string_view 可以在不拥有字符串内容的情况下提供轻量访问。文件系统库也在这一版本中成为标准库的重要组成部分。