首页 >后端开发 >C++ >什么时候应该使用'class”和'typename”作为模板参数?

什么时候应该使用'class”和'typename”作为模板参数?

Barbara Streisand
Barbara Streisand原创
2024-11-24 19:00:24292浏览

When Should You Use `class` vs. `typename` for Template Parameters?

为模板参数选择“class”和“typename”

在 C 中,声明函数或类模板时,可以使用class T 或 typename T 来参数化模板。这就提出了一个问题:是否有任何令人信服的理由选择一种形式而不是另一种形式?

等价和语法

类 T 和类型名 T 通常等价于编译器的角度。但是,从 C 17 开始,严格建议在指定嵌套模板模板参数时使用关键字 typename,从而有效地取代以前在这种情况下使用 class 的要求。

使用首选项

尽管它们本质上是等价的,但一些程序员更喜欢对各种不同的类型一致地使用类型名或类原因:

  • 类型名称首选项:

    • 通过明确指示参数是类型来增强清晰度。
  • 班级首选项:

    • 保持与引入 typename 之前的遗留代码的兼容性。
  • 双重用途:

    • 一些程序员使用 typename 作为模板类型模板参数的类,符合历史命名约定。
  • 无偏好:

    • 其他简单没有发现两者之间有任何有意义的区别

历史背景

类和类型名之间的区别在 C 模板的演变中出现。最初,仅使用了类,但出于对潜在混淆的担忧,导致创建了 typename 作为专门用于指定模板类型的单独关键字。然而,为了避免破坏向后兼容性,类仍然被允许用于此目的。

总之,虽然类和类型名在大多数实际用途中都可以互换使用,但它们之间的选择通常取决于个人喜好或遵守某些约定。最新的 C 17 修订版阐明了嵌套模板模板参数的 typename 的首选用法,确保这些复杂结构的语法一致且明确。

以上是什么时候应该使用'class”和'typename”作为模板参数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn