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 >
{
};
posted on 2007-04-07 16:02
walkspeed 阅读(1743)
评论(1) 编辑 收藏 引用 所属分类:
STL、Boost、范型编程 、
C++语言