Почему тип не выводится автоматом?
template<typename retType,class Func >
class Call
{
public:
Call(Func* func)
{
func(500,500);
};
};
Использование:
Call<int> call(Beep);//ошибка "слишком мало аргументов шаблона"
Почему тип func не может быть автоматов выведен? С функциями так можно:
template<typename retType, class Func >
void fnc(Func* func)
{
func(500, 500);
}
Использование:
fnc<int>(Beep);// все работает
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
Для шаблонов классов выводятся или все аргументы, или никакие.
Это обходится синтаксисом в духе Call call(tag<int>{}, Beep);, где tag - это
template <typename> struct tag {};
, а конструктор выглядит так:
Call(tag<retType>, Func* func)