Template Meta-Programing

Effective C++ という本を買いました。


で、Introductionに''Template Meta-Programing''という手法が書かれていたのでちょっと動作テスト。

#include	<iostream>

template < int I > struct kaijo;

template <>
struct kaijo<1>
{
	enum { value = 1 };
};

template < int I >
struct kaijo
{
	enum { value = I * kaijo< I - 1 >::value };
};

int main( int argc, char *argv[] )
{
	std::cout << kaijo<5>::value << std::endl;
}

うーん。
単純なプログラムなので動作の理解は出来ますが、メリットとデメリットは不明。
でも勉強する価値は高そうなので後でやろうっと。


しかし、こんな記述方法もあるんだなぁ・・・。