由于工作原因,常常会在各种编程语言技术栈下切换。每次切回到C/C++技术栈下,都会为C/C++语言缺乏一个好用的包管理器而不适应好一阵。 包管理...
前文谈了代码和库的符号隐藏手段。在C/C++中,无论我们如何对符号进行隐藏,最后该暴露给客户的API还是要声明到头文件中发布给别人使用。如何设计...
上一篇中我们谈到在软件开发中使用演进式设计来让软件持续的响应变化。 演进式设计强调对不确定的变化不做提前预估,优先保持设计的“简单性”,避免过度...
众所周知,解决代码耦合问题的核心原则之一是信息隐藏。即把所有客户不需要关心的信息尽力隐藏起来,只暴露出仅需要被依赖的东西。这样做不仅可以控制变化...
C++模板元编程中,编译器对模板的特化版本选择相当于是在做模式匹配,这个我们已经比较熟悉了。下面我们借助这一特性实现一个在模板元编程中最常使用的...
下面我们实现一个能够判断两个类型是否相等的元函数: 上面的实现中使用了模式特化,当两个类型相等时,选择特化版本,否则选择非特化版本。 接下来我们...
C++是一门非常适合用来构建DSL(Domain Specific Language)的语言,它的多范式特点为它提供了丰富的工具,尤其是C++提...
C++中可以参与编译期计算的主要是类型和编译期常量,它们都是不可变的(immutable)。从这个角度来说,C++模板元编程是一种纯函数式语言,...
一 对于社会,人们常说法律是自由的底线,道德是自由的补充!而对于企业来说,制度是行为底线,文化是行为的补充! 那么对于什么应该规定到制度中去,什...