テンプレートまとめ①関数テンプレート

〇テンプレート実引数の推定

テンプレート実引数の推定...テンプレート関数を呼び出す時、テンプレート実引数の型を、コンパイラに自動判断させる機能

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