У меня есть boost::mpl::vector
, и теперь мне нужен шаблон (функция), который "перебирает" типы до тех пор, пока не будет найдено первое совпадение (во время выполнения). Что-то похожее на boost::fusion::find_if
, но без sequence, являющегося значением времени выполнения.
Будет ли это работать так:
typedef boost::mpl::vector<Foo, Bar> Types;
template< typename T >
struct Finder {
bool operator()() const;
};
struct Callback {
template< typename T >
void operator()();
};
Callback callback;
magic_find_if<Types, Finder>(callback);
Возможно ли что-то подобное в mpl/fusion (не нашел)
Я знаю, что все варианты Callback::operator()
будут "созданны", но это нормально. Можно было бы реализовать это с помощью Variadic Templates, но, к сожалению, я застрял на C++98.