我对下面的模板行为感到困惑,它可以用空尖括号(没有参数的模板)很好地编译,因为在语法上,模板<>被保留以标记显式模板特化。
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)
}
在上述情况下,模板参数真的是可选的吗?