template<class T>
void fun(T){}
template<>
int fun(int){return 0;}
考虑这个例子,它被所有实现拒绝。但是,我在当前标准中没有找到任何有说服力的条款来指定这个明确的专业化声明是格式错误的。如果存在,规则是什么?
此外,潜在的相关规则可能是 [temp.deduct.decl#2]
如果对于这样考虑的一组函数模板,在考虑了偏序([temp.func.order])之后没有匹配或有多个匹配,则推导失败,并且在声明的情况下,程序有问题-形成。
我认为“匹配”的含义在这里不够清楚,因为“匹配”没有明确定义任何东西。