【发布时间】:2013-02-09 11:50:12
【问题描述】:
这里给出的简单代码应该可以按照 c++ 标准运行我相信:
template<typename T>
void foo(T x)
{
bar(x);
void bar(int);
}
void bar(int) { }
int main()
{
foo(0);
}
错误来自 GCC 4.7:
‘bar’没有在这个范围内声明,也没有找到声明 通过实例化点的参数相关查找
但它是在 C++ 标准中编写的。 § 14.6.4.2:
对于依赖于模板参数的函数调用, 使用通常的查找规则(3.4.1, 3.4.2, 3.4.3) 除了:
——对于使用非限定名称查找 (3.4.1) 或限定名称查找 (3.4.3) 的查找部分,仅找到来自模板定义上下文的函数声明。
我可能对所写的内容有错误的印象,有人可以在这里纠正我吗?
【问题讨论】:
标签: c++