首页 > 后端开发 > C++ > 正文

为什么我仍然需要为具有默认参数的类模板指定参数?

Linda Hamilton
发布: 2024-11-04 04:56:30
原创
818 人浏览过

Why Do I Still Need to Specify Arguments for a Class Template with Default Arguments?

理解 C 中的默认模板参数:避免指定参数

在 C 编程中,可以使用默认模板参数声明类模板。但是,理解为什么在某些情况下仍然需要指定参数可能会令人困惑。

原始问题:

考虑以下类模板:

<code class="cpp">template <typename T = int>
class Foo {
};</code>
登录后复制

根据问题,应允许使用以下代码:

<code class="cpp">Foo me;</code>
登录后复制
登录后复制

但是,需要以下代码:

<code class="cpp">Foo<int> me;</code>
登录后复制

答案:

在 C 17 之前,必须在类模板声明中使用默认参数指定参数。换句话说,需要以下代码:

<code class="cpp">Foo<> me;</code>
登录后复制

即使未显式提供模板参数,空尖括号

>必须存在以指示正在使用默认参数。此语法类似于使用单个默认参数调用函数,该函数需要空括号 ()。

C 17 更新:

在 C 17 中,此行为发生了变化,并且可以省略尖括号 当使用默认模板参数时。因此,现在允许使用以下替代语法:
<code class="cpp">Foo me;</code>
登录后复制
登录后复制

结论:

理解在具有默认参数的类模板中指定参数的要求需要熟悉历史C 的演变。在 C 17 之前的版本中,显式尖括号 是必需的,而 C 17 引入了更方便的语法,允许在使用默认参数时省略它们。

以上是为什么我仍然需要为具有默认参数的类模板指定参数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!