Usage of typelist

Usage of typelist

本文关键字:typelist of Usage      更新时间:2023-10-16

Typelist(在Alexandrescu定义的意义上)主要用于生成类的层次结构(可能用于boost::tuple这样的类)还是有很多其他领域typelist非常有用?

它也用于Ulrich W. Eisenecker, Frank Blinn和Krzysztof Czarneck所描述的基于mixin的c++编程。

我相信你指的是模板链表之类的东西。

这是模板元编程的基本结构。模板元编程有多种应用,程序员在模板中编码一个问题,元程序实现一个算法来解决这个问题。

Boost Spirit通常被认为是模板元编程的一个主要例子,尽管不幸的是我不能告诉你更多关于它的信息。

在我看来,类型器作为其他泛型库的构建块最有用,而不是直接在客户端代码中使用。如果Boost元组或MPL足够灵活,可以满足您的需求,就不要使用低级工具。但是如果你需要那种灵活性,你也可以直接使用typelist

我们使用类型列表作为类型安全的组合,但是每个子类型都可以通过单个接口访问:

// Defining a typelist:
typedef TypeList<A,
        TypeList<B,
        TypeList<C, NullType> > > MyTypeList;
MyTypeList tl;
// Setting values in the typelist:
A a;
tl.set(a);
C c;
tl.set(c);
tl.tail().head() = newB;
// Retrieving values from the typelist:
C c = tl.get<C>();
B b = tl.tail().head();
// To reinitialize a value:
tl.reset<B>();
tl.set(B());
// To get total size:
int size = tl.count();

除此之外,还有一个迭代接口和对函子的内置支持。

这样做的好处是,您可以根据需要独立地或均匀地对待这些孩子。

缺点是牺牲了一定数量的抽象性。事情变得更加具体。它还引入了一种处理组合的新方法,对于需要使用该代码的其他人来说,这是一种新的学习方法。

对于我们来说,在我们使用它的地方,它是一个很好的选择。