c++ - 只传递第二个模板参数的方法

标签 c++ templates parameter-passing template-argument-deduction default-arguments

所以我有一个模板函数,它有一个默认的第二个nd 参数。可以推导出第一个st 参数,所以类似:

template <typename F, typename S = int>
void foo(const F param)

这在一般情况下工作正常,我会调用 foo(bar) .但是在我想指定第二个参数的情况下,我不能这样做:foo<char>(bar) ,因为 char被视为F .显然情况并非如此,因为 bar不是 char , 所以 F应该是可推导的。

有没有一种方法可以让我在这里只传递一个适用于 S 的模板参数? , 还有F被推导,依然默认S在一般情况下?

最佳答案

只需重新排序模板参数:

template <typename S = int, typename F>
void foo(const F param);

模板可以在任何地方有默认值。最后,应提供、默认或推导所有模板参数。

关于c++ - 只传递第二个模板参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54694065/

相关文章:

linux - 将文件名传递给变量时出现命令未找到错误

java - ProcessBuilder中传递参数返回 "Could not find or load main class"

c++ - 动态 vector 大小分配

c++ - Numpy 的 __array_interface__ 不返回字典

其成员是结构 : Cannot understand compiler error 的 C++ 类

templates - 如何在 Polymer 1.0 中对对象而不是数组使用 dom-repeat?

C++ 继承模板类和初始化列表

c++ - 带构造函数的类模板参数推断

spring-mvc - Spring 3-带有2个按钮的表单,向 Controller 方法发送2个参数

c++ - 可变参数函数中的 std::nullptr_t 参数