Может ли функция шаблона вызываться с отсутствующими параметрами шаблона в C ++?
Это вопрос интервью, который был сделан.
В какой строке есть ошибка?
#include<iostream>
template<class T> void foo(T op1, T op2)
{
std::cout << "op1=" << op1 << std::endl;
std::cout << "op2=" << op2 << std::endl;
}
template<class T>
struct sum
{
static void foo(T op1, T op2)
{
std::cout << "sum=" << op2 << std::endl ;
}
};
int main()
{
foo(1,3); // line1
foo(1,3.2); // line2
foo<int>(1,3); // line3
foo<int>(1, '3') ; // line 4
sum::foo(1,2) ; // line 5 ,
return 0;
}
В строке 2 произошла ошибка, поскольку параметр шаблона не соответствует определению. В строке 5 произошла ошибка, так как параметр шаблона отсутствует.
Но строка 1 не является ошибкой, я не знаю почему, не пропускает ли она параметр шаблона?
Спасибо !