Перебор типов в boost :: варианте - PullRequest
12 голосов
/ 30 января 2010

Я использую вариант наддува для хранения некоторых сгенерированных типов, сейчас мой генератор кода создает заголовок с типами и вариант, способный их содержать. Во время инициализации я бы хотел перебрать допустимые типы в варианте, а не типы, которые в данный момент содержится в этом варианте.

Могу ли я сделать это с вариантом?

1 Ответ

21 голосов
/ 30 января 2010

boost::variant предоставляет свои типы через types, который является списком MPL.Вы можете выполнять операции во время выполнения над списками MPL, используя mpl :: for_each :

struct printer {
    template<class T> void operator()(T t) {
        std::cout << typeid(T).name() << std::endl;
    }
};

// ... 
typedef boost::variant<int, char> var;
boost::mpl::for_each<var::types>(printer());
...