注意隐式实例化、显式实例化和显式特化是彼此不同的三样东西。特化不同于实例化,不同之处在于,特化可以有完全不同于template内部实现的具体实现,这在实际的应用中是非常有意义的。
因为即便是模版类在处理同一类任务的时候也会遇到普遍原则不适用的时候,而template只适用于普遍情况。那些距离普遍情况不远,但又确有不同的情况就应该使用template的显式特化版本。
所以template的显式特化的调用优先级高于同一个template的实例。
显式特化的声明形式如下:
如果把这个显式特化去掉再看:
它就会去调用实例化。