对函数式编程来说,list是其中最基础也是最重要的数据结构。通过list可以轻易地构造出tree,map等复杂数据结构,所以必须熟悉list的结构和算法。
在C++模板元编程中,一切操作对象已经统一到类型上,所以我们需要的是一个针对类型的list数据结构,这就是TLP库中的TypeList。
TypeList最初由Andrei Alexandrescu在《Modern C++ Design》一书中介绍,这里我基于C++11标准对其进行了改写,并丰富了它的高阶算法。得益于C++11标准,新的实现要比原来的简单清晰很多,而且算法也更加丰富。