c++ - 仅传递第二个模板参数的方法
问题描述
所以我有一个模板函数,它有一个默认的第二个参数。可以推断出它的第一个论点,例如:
template <typename F, typename S = int>
void foo(const F param)
这在一般情况下工作正常,我只需调用foo(bar)
. 但是在我想指定第二个参数的情况下,我不能这样做:foo<char>(bar)
,因为char
被视为F
。显然情况并非如此,因为bar
不是 a char
,所以F
应该是可推导出的。
有没有一种方法可以在这里只传递一个模板参数,该参数适用于S
,仍然F
可以推导出来,并且S
在一般情况下仍然默认?
解决方案
只需重新排序模板参数:
template <typename S = int, typename F>
void foo(const F param);
模板可以在任何地方有默认值。最后,应提供、默认或推断所有模板参数。
推荐阅读
- php - 从存储在不同文件夹中的元素数组列表创建 zip
- html - 当父元素具有负 z-index 时标签不可点击
- knockout.js - 淘汰赛,¿绑定名称可以是动态的(变量)吗?
- ruby-on-rails - 在 Rails 中使用强参数动态生成方法
- visual-studio-2017 - Visual Studio 2017(任何版本)不再能够在 Windows 10 上安装或更新
- c# - 如何在 c# 中使用 iText 7 将 SVG 图形添加到 pdf 文档?
- c - 计算整个字符串,包括 C 中的空格
- templates - 我们可以限制 Sitecore 项目只有一个页眉和页脚渲染吗?
- java - 如何使用文件输入和输出流从文件中添加和获取特定数量的字节?
- matlab - matlab中如何正确测量一段代码的执行时间?