仅传递第二个模板参数的方法



所以我有一个模板函数,该功能具有默认的2 nd 参数。可以推导1 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);

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

最新更新