Я смущен приведенным ниже шаблоном, где он компилируется с помощью пустых угловых скобок (шаблон без параметров), так как синтаксически шаблон <> зарезервирован для обозначения явной специализации шаблона.вызов функции шаблона с пустыми угловыми скобками <>
template <typename T> void add(T a, T b) { }
int main() {
add<>(10, 3); // compiles fine since both parameters are of same data type
add<>(10, 3.2); // Error: no matching function for call to add(int, double)
}
В приведенном выше случае параметр шаблона действительно необязательный?