摘要:
我们在编写C++类库时,为了隐藏实现,往往只能忍痛舍弃模版的强大特性。但如果我们只需要有限的几个类型的模版实现,并且不允许用户传入其他类型时,我们就可以将实例化的代码放在cpp文件中实现了。然而,当我们又需要针对特定类型进行模版偏特化时,由于gcc编译器不允许直接在类中进行偏特化声明,所以正确的写法变得比较复杂。本文通过一个简单的求log2函数的例子,提供了一个在cpp中同时进行偏特化和实例化的一般写法,并且可以使用static_assert在编译期检查参数的实现。 阅读全文