双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

《Modern C++ Design》Loki库读解四

anrxhzh anrxhzh 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在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的不同就是后者存储和操纵的是数据,前者存储和操纵的是类型;后者是运行时,前者是编译时。
...全文

相关推荐

评论 41
收藏 已收藏
分享
返回顶部
anrxhzh
工具平台和程序库 24,850 成员 27,330 内容