为模板参数选择“class”和“typename”
在 C 中,声明函数或类模板时,可以使用class T 或 typename T 来参数化模板。这就提出了一个问题:是否有任何令人信服的理由选择一种形式而不是另一种形式?
等价和语法
类 T 和类型名 T 通常等价于编译器的角度。但是,从 C 17 开始,严格建议在指定嵌套模板模板参数时使用关键字 typename,从而有效地取代以前在这种情况下使用 class 的要求。
使用首选项
尽管它们本质上是等价的,但一些程序员更喜欢对各种不同的类型一致地使用类型名或类原因:
类型名称首选项:
班级首选项:
双重用途:
无偏好:
历史背景
类和类型名之间的区别在 C 模板的演变中出现。最初,仅使用了类,但出于对潜在混淆的担忧,导致创建了 typename 作为专门用于指定模板类型的单独关键字。然而,为了避免破坏向后兼容性,类仍然被允许用于此目的。
总之,虽然类和类型名在大多数实际用途中都可以互换使用,但它们之间的选择通常取决于个人喜好或遵守某些约定。最新的 C 17 修订版阐明了嵌套模板模板参数的 typename 的首选用法,确保这些复杂结构的语法一致且明确。
以上是什么时候应该使用'class”和'typename”作为模板参数?的详细内容。更多信息请关注PHP中文网其他相关文章!