代码之家  ›  专栏  ›  技术社区  ›  swarfrat

迭代boost::variant中的类型

  •  11
  • swarfrat  · 技术社区  · 15 年前

    我使用Boost变量来保存一些生成的类型,现在我的代码生成器创建一个头部,其中包含类型和能够保存类型的变量。在初始化时,我想迭代变量中允许的类型,而不是变量目前持有的类型。

    我可以用一个变体来做这个吗?

    1 回复  |  直到 15 年前
        1
  •  20
  •   Georg Fritzsche    15 年前

    boost::variant 通过显示其类型 types ,这是一个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());