C++ 中的模板与多态性深度解析
1. C++ 语言扩展探索
在 C++ 领域,像函数表达式这类构造虽常被语言设计者提及,但具体提案却较为罕见。设计此类扩展并非易事,其难度远超示例所呈现的程度。其中需要解决的问题包括返回类型的规范,以及确定函数表达式体内可使用哪些实体的规则。例如,能否访问周围函数的局部变量?函数表达式也可能是模板,其参数类型可从函数表达式的使用中推导得出。这种方式虽能让代码更简洁,却给模板参数推导系统带来了新挑战。
虽然目前尚不确定 C++ 是否会引入函数表达式这一概念,但 Jaakko J¨arvi 和 Gary Powell 的 Lambda 库在一定程度上提供了所需功能,不过代价是消耗大量编译器资源。
随着 C++ 编译器逐渐符合 1998 标准(C++98),C++ 程序员社区开始深入了解 C++(尤其是模板)的真正局限性。为满足新需求,C++ 标准委员会(ISO WG21/ANSI J16,简称 WG21/J16)着手探索通往新标准 C++0x 的道路。在 2001 年 4 月哥本哈根会议的初步展示后,WG21/J16 开始研究具体的库扩展提案。
扩展主要集中在 C++ 标准库,但部分扩展可能需要对核心语言进行修改。预计许多修改将与 C++ 模板相关,就像 20 世纪 90 年代 C++ 标准库引入 STL 推动了模板技术的发展一样。此外,C++0x 还将解决 C++98 中的一些不足,以提高 C++ 的易用性。
2. 模板与设计的新元素
模板作为一种全新的语言机制,为程序设计带来了新元素。与传统语言构造不同,模板允许对代码的类型和常量进行参数化。结合部分特化和递归实例化,模板展现出强大的
C++模板与多态性深度解析
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



