C++ Programming Languageの第 3 版の第 13 章で、Stroustrup が関数テンプレートのデフォルト パラメータを示している理由を説明できますか? これは、セクション 13.4.1 で Stroustrup が示した例です。
呼び出しごとに比較を明示的に指定するのは面倒です。幸いなことに、一般的でない比較基準のみを明示的に指定する必要があるように、デフォルトを選択するのは簡単です。これは、オーバーロードによって実装できます。
template<class T, class C> int compare(const String<T>& str1, const String<T>& str2); // compare using C template<class T> int compare(const String<T>& str1, const String<T>& str2); // compare using Cmp<T>または、デフォルトのテンプレート引数として通常の規則を指定できます。
template <class T, class C = Cmp<T> > int compare(const String<T>& str1, const String<T>& str2)
これはコンパイラエラーです:
エラー: デフォルトのテンプレート引数は関数テンプレートで使用できない可能性があります