Template Meta-Programing 初歩 その2 : 型の切り替え
template < bool bln, typename Type1, Typename Type2 > struct Std { typedef Type1 Type; }; template < typename Type1, typename Type2 > struct Std< false > { typedef Type2 Type; }; class CTest1 { /* 省略 */ }; class CTest2 { /* 省略 */ }; Std< true, CTest1, CTest2 >::Type a; /* a は CTest1 のインスタンス */ Std< false, CTest1, CTest2 >::Type b; /* b は CTest2 のインスタンス */