《Modern C++ Design》Loki库读解四
我在CSDN上的账号被冻结了,无法发表评论,谁能待发一下,相赠50分。
--------------------------------------------------------------------------
学而不思则惘,思而不学则怠。
从技术上看,loki的基石是typelist,这一个非常简单的概念:
template <class H, class T>
struct typelist
{
typedef H head;
typedef T tail;
};
typelist并不是loki的首创,它来自于Metaprogramming,但是把它运用于设计模式则是Andrei Alexandrescu的天才。
在我看来,loki是Generic Programming的实作,它和STL有亲缘关系。有的人把STL称作参数化的过程和类,我觉得这只是表面现象,没有人会把OO称作vtable,因为这里面蕴含着新的方法论。
STL解决了数据结构和算法的抽象问题,这是传统OO的难题。loki试图解决模式的抽象问题,这是一项创举,STL和loki都有自己的一系列术语,OO中的类在这里被泛化了。以“我爱你”为例,OO能够很好地表达我和你的概念,不能很好地表达爱这个概念,这就是GP的用武之地。HierarchyGenerators可以运用在abstrct factory中,实际上就是表达了“创建”这个概念。我觉得loki和STL的不同就是后者存储和操纵的是数据,前者存储和操纵的是类型;后者是运行时,前者是编译时。