ノンタイプテンプレートパラメータ

本来、型を指定するのが、テンプレートのパラメータ部分だが、型以外のモノを指定することもできる。

テンプレート仮引数 | Programming Place Plus C++編【言語解説】 第22章

array.hで、

array_の型はTになっていて、テンプレートパラメータで型を指定する。
一方で、array_の添字の要素数の部分はNになっていて、これもテンプレートパラメータでintなのでこの場合は整数を指定する。

main.cppでは、

こんな感じでテンプレートパラメータを指定する。

$ vi main.cpp 
$ g++ main.cpp -o main
$ ./main 
set range error!
ary.get(0) = 10
ary.get(1) = 20
ary.get(2) = 30
ary.get(3) = 40
ary.get(4) = 50
get range error!
ary.get(5) = -1
$

確かに要素数は5である。

Sample/cpp/nontype_template_parameter/nontype_template_parameter/src/nontype_template_parameter at master · bg1bgst333/Sample · GitHub