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

Спасибо !

Ответы на вопрос(2)

Ваш ответ на вопрос