Я хочу вызвать макрос с некоторыми аргументами, зависящими от результата 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
. Интересно, как это можно сделать в C ++ 03 через Boost.MPL / Preprocessor или какую-либо другую библиотеку Boost?