boost::mpl::eval_if
空でないテンプレート引数の数を与えることができる(または同様の関数)の結果に応じて、いくつかの引数を使用してマクロを呼び出したいと思います。次のような擬似コードがあるとします。
struct EmptyType { };
template<class arg1=EmptyType, class arg2=EmptyType, class arg3=EmptyType>
class my_class
{
eval_if<is_not_same<arg1, EmptyType>, FILL_MY_CLASS_DEFINE(1)> else
eval_if<is_not_same<arg2, EmptyType>, FILL_MY_CLASS_DEFINE(2)> else
eval_if<is_not_same<arg3, EmptyType>, FILL_MY_CLASS_DEFINE(3)>;
};
引数の数に応じて、クラスをコンテンツで埋めようとしていますEmptyType
。Boost.MPL/プリプロセッサまたは他のBoostライブラリを介してC++03でそのようなことをどのように行うことができるのだろうか?