用vector来自动生成类

用vector来自动生成类

        Modern C++ Design中实现了一个自动生成类的方法。它用的是Loki中的TypeList。我在这里使用了boost MPL中的vector来作为类型的容器。按boost MPL库的设计理念,其他的类型容器也应该可以利用这里的实现的(没有试过,可能有问题,特别是map类型容器)

        实现如下(注:我已将boost的头文件放到了vc的include目录中)
  
    #include < boost/mpl/vector.hpp >
    #include < boost/mpl/front.hpp >
    #include < boost/mpl/pop_front.hpp >

    template< typename Type >
    struct Holder
    {
        Type value_;
    };

    template< typename TypeSequeue, template< typename > class Unit >
    struct TypeConstract : public Unit< typename boost::mpl::front< TypeSequeue >::type >,
                           public TypeConstract< typename boost::mpl::pop_front< TypeSequeue >::type,
                                                 Unit >
    {
    };

    template< template< typename > class Unit >
    struct TypeConstract< boost::mpl::vector<>::type, Unit >
    {
    };                                                                                                                                                                      

你可能感兴趣的:(用vector来自动生成类)