(我假设了解此问题中的Abrahams/Dimov 示例。)
假设在这样的标头中有一些第 3 方代码,您无法修改:
template<class T> void f(T); // (1) base template 1
template<class T> void f(T *); // (2) base template 2
template<> void f<>(int *); // (3) specialization of (2)
问题是:
如果我已按原样获得上述声明,我现在是否可以T = int *
针对(例如)的情况专门化基本模板 1 ?
或者仅仅声明基本模板 2 是否意味着基本模板 1 不能再被专门化(至少对于指针而言)?