Visualization Tool Kit(VTK)など

バッファー用途などでcharに限定したコンテナを用いたい場合がある。
テンプレート テンプレート パラメータを用いる。

template <template <typename T, typename A = std::allocator<T>> class Container = std::vector>
Container<char> Read()
{
  Container<char> reply;
  ...
  return reply;
}

std::vector<char> reply = Read(); 
std::deque<char> reply = Read<std::deque>();

templateが入れ子になっているがこれをtemplate template parameterという。
この宣言ではContainerは【TとAの2種類のテンプレート引数をもつテンプレート型】であり既定ではvectorであるとしている。
【(TとAをテンプレート引数とする)Containerというテンプレート引数を持つReadという関数】で関数にTはかかっていない。
すなわち、関数テンプレートのテンプレート引数はContainer一つだけであり、テンプレート引数を2つもつテンプレート型を指定する必要がある。

Read<std::vector<int>>(); // error

よって要素型をcharに固定した任意のコンテナに対する関数やクラスが記述できる。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー

チュートリアル

アルゴリズム(数学)

並列計算

STL

#include<memory> #include<string> #include<sstream> #include<algorithm> #include<functional> #include<numeric>

Media Foundation

【メニュー編集】
Wiki記法ガイド

メンバーのみ編集できます