以下是标准对模板定义中非依赖名称的说明:
模板定义中使用的非依赖名称是使用通常的名称查找找到的,并在使用它们时绑定。
[示例 1:
void g(double); void h(); template<class T> class Z { public: void f() { g(1); // calls g(double) h++; // ill-formed: cannot increment function; this could be diagnosed // either here or at the point of instantiation } }; void g(int); // not in scope at the point of the template definition, not considered for the call g(1)
——结束示例]
我对“格式错误:......这可以在此处或在实例化点进行诊断h++;
”的评论感到困惑。如果实现选择后者,但没有模板的实例化怎么办?这要在哪里诊断?
这是否意味着这实际上是不正确的,而不需要诊断?