所以我有一个模板函数,它有一个默认的第二个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/