本「Essential C++」(より具体的には、パート 2.7) で、著者はテンプレート関数の使用法について次の例で簡単に説明しています。この例では、診断メッセージが表示され、ベクトルの要素を反復処理します。
template <typename T>
void display_message(const string& msg, const vector<T>& vec)
{
cout << msg;
for (int i = 0; i < vec.size(); ++i)
cout << vec[i] << ' ';
}
この例に興味を持ったのは、私 (おそらく他の多くの愛好家の開発者と同じように) は、ほとんどのアプリケーションで標準入出力ストリームが通信とデータ処理に使用されていることを常に当然のことと思っていたからです。次に著者は、display_message を実装するこの方法はより柔軟であると述べています。この柔軟性が、いわば「光る」状況の例を教えてください。言い換えれば、オプションの 3 番目のパラメーターが別の入出力表現 (たとえば、組み込みデバイス) を取る場合がありますか、それとも、単純な構造で使用されることになっている単純な追加にすぎませんか?私が説明しようとしている状況?
編集:@Matteo Italiaが気づいたように、これは関数宣言です
void display_message(const string&, const vector<T>&, ostream& = cout);