Как циклично выполниться посредством повышения:: mpl:: список?

Это - насколько я добрался,

#include <boost/mpl/list.hpp>
#include <algorithm>
namespace mpl = boost::mpl;

class RunAround {};
class HopUpAndDown {};
class Sleep {};

template<typename Instructions> int doThis();
template<> int doThis<RunAround>()    { /* run run run.. */ return 3; }
template<> int doThis<HopUpAndDown>() { /* hop hop hop.. */ return 2; }
template<> int doThis<Sleep>()        { /* zzz.. */ return -2; }


int main()
{
    typedef mpl::list<RunAround, HopUpAndDown, Sleep> acts;

//  std::for_each(mpl::begin<acts>::type, mpl::end<acts>::type, doThis<????>);

    return 0;
};

Как я завершаю это? (Я не знаю, должен ли я использовать станд.:: for_each, просто предположение на основе другого ответа здесь)

9
задан Georg Fritzsche 15 May 2010 в 18:04
поделиться

1 ответ

Используйте mpl :: for_each для выполнения итерация по спискам типов. Например: [

struct do_this_wrapper {
    template<typename U> void operator()(U) {
        doThis<U>();
    }
};

int main() {
    typedef boost::mpl::list<RunAround, HopUpAndDown, Sleep> acts;
    boost::mpl::for_each<acts>(do_this_wrapper());    
};
]
14
ответ дан 4 December 2019 в 14:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: