item44:将与参数无关的代码抽离template
编写non-template代码中,重复十分明显:可以很直观的看到代码的重复,然后将它们写成一个新的class或者函数,然后供调用。
编写template代码中,重复是隐晦的:只存在一份template源代码,所以必须训练自己去感受template具现化多次时可能发生的重复。
Template生成多个classes和多个函数,所以任何template代码都不该与某个造成膨胀的template参数产生相依关系;
因非类型模板参数而造成的代码膨胀,往往可消除,做法是以函数参数或class成员变量代替template参数;
因类型参数而造成的代码膨胀,往往可减低,做法是让带有完全相同二进制表述的具现类型共享实现码。