以下のテンプレートの動作と混同しています。ここでは、空の山括弧 (パラメーターなしのテンプレート) で正常にコンパイルされます。これは、構文的に、 template<> が明示的なテンプレートの特殊化をマークするために予約されているためです。
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)
}
上記の場合、テンプレート パラメータは本当にオプションですか?