テンプレートまとめ①関数テンプレート
〇テンプレート実引数の推定
テンプレート実引数の推定...テンプレート関数を呼び出す時、テンプレート実引数の型を、コンパイラに自動判断させる機能
template <typename T>
void write(T a);
write(100);
のような感じ。
〇関数テンプレートを実装する場所
複数のファイルを使ったプログラムでは、関数宣言をヘッダファイルに記述し、定義をソースファイル側に記述するが、関数テンプレートの場合、うまくいかない。
→宣言も定義も同じヘッダファイルに記述。(定義のみでいい)
〇可変個テンプレート仮引数(C++11)
詳しくは以下の例。再帰処理が必要。
include <iostream>
void write_inner()
{
}
template <typename T, typename... ARGV>
void write_inner(T first, ARGV... argv)
{
std::cout << first << " ";
write_inner(argv...);
}
template <typename... ARGV>
void write(ARGV... argv)
{
write_inner(argv...);
std::cout << std::endl;
}
int main()
{
write();
write('a');
write(10, "xyz", 0.5);
}
a
10 xyz 0.5