汎用クラスのテンプレート指定では汎用型ではない引数を指定することもできる。
ただし指定できるのは整数、ポインタ、参照のいずれか。
#include <iostream> using namespace std; template <class T, int num> class Test { T mValue[num]; public: Test() { for(int i=0; i<num; i++) mValue[i] = i; } T get(int i) { return mValue[i]; } }; void main() { Test<int, 10> obj; cout << obj.get(3) << endl; }
このプログラムでは配列の個数を指定している。
指定した引数は定数として扱われるので汎用クラス内で値を変更することはできない。