Способ только передать второй параметр шаблона - PullRequest
0 голосов
/ 14 февраля 2019

Итак, у меня есть шаблонная функция с аргументом по умолчанию 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 в общем случае?

1 Ответ

0 голосов
/ 14 февраля 2019

Просто измените порядок аргументов шаблона:

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

шаблон может иметь значение по умолчанию в любом месте.В конце все параметры шаблона должны быть предоставлены, установлены по умолчанию или выведены.

...