在本文的上篇中,我们大刀阔斧的剖析了signal的架构。不过还有很多精微之处没有提到,特别是一个遗留问题还没有解决:如果用户注册的是函数对象(仿函数),signal又当如何处理呢?阅读全文>
发表于 @ 2007年04月11日 18:37:00|评论(loading...)|编辑
boost库固然是技术的宝库,却更是思想的宝库。大多数程序员都知道如何应用command,observer等模式,却不知该如何写一个支持该模式的类。正如隔靴搔痒,无法深入。DDJ上曾有一篇文章用C++实现类似C#的event机制,不过是个雏形,比之boost.Signal却又差之甚远矣。阅读全文>
发表于 @ 2007年04月11日 17:50:00|评论(loading...)|编辑
...boost库是个特性完备,且具备工业强度的库,众多C++权威的参与使其达到了登峰造极的程度。尤其泛型的强大威力在其中被发挥得淋漓尽致,令人瞠目结舌。然而弱水三千,我们只取一瓢饮。下面,我试图从最单纯的世界开始,一步一步带领你进入源码的世界,去探究boost::function(下文简称function)内部的精微结构...阅读全文>
发表于 @ 2007年04月11日 16:31:00|评论(loading...)|编辑
...首先,了解tuple的设计目标十分重要。上面所讲的只是一个总的设计目标。下面两个细节设计目标才是真正需要和体现技术的地方(并且考虑它们如何能够最佳实现是非常有趣的事情,当然,在你的种种考虑之后,你得承认,Boost库的设计无疑是最精致和高效的),容我向你阐述它们:...
阅读全文>
发表于 @ 2007年04月11日 16:24:00|评论(loading...)|编辑
在Boost库中就有一个用于描述多维数组的功能强大的MultiArray库。它实现了一个通用、与标准库的容器一致的接口,并且具有与C++中内建的多维数组一样的界面和行为。正是这种设计,使得MultiArray库与标准库组件甚至用户自定义的泛型组件之间可以具有很好的兼容性,使它们能够很好协同工作。除此之外,MultiArray还提供了诸如改变大小、重塑(reshaping)以及对多维数组的视图访问等极为有用的特性,从而使MultiArray比其它描述多维数组的组件...阅读全文>
发表于 @ 2007年04月11日 16:16:00|评论(loading...)|编辑
type_traits是泛型框架得以建立的基础,编译期知道关于型别的一切信息,但是C++语言本身并没有用于将型别分类或确认型别的关键字,但是条条大路通罗马,Boost库的作者以无与伦比的技巧,通过标准里面的一些精微的细节,做到将大部分型别规类,我们就来探究一下其内部到底如何...阅读全文>
发表于 @ 2004年08月24日 21:55:00|评论(loading...)|编辑
想过实现一个“泛型”的指针类吗?不,我不是说void*,因为void*不是类型安全的,从中取出任意一个类型的对象都可以。我们要的是一个“类型安全”的泛型指针。boost为之...阅读全文>
发表于 @ 2004年08月24日 01:42:00|评论(loading...)|编辑
如何侦测某个C++类型中是否有某个内嵌的typedef名字是个有趣的问题,boost中已经用到了这项技术,旨在提高源码的灵活性和可复用性。本文则为你阐释这项技术背后隐藏的机理...阅读全文>
发表于 @ 2004年08月24日 01:18:00|评论(loading...)|编辑