在哪里可以找到符合C++的编译器必须应用的规则列表才能执行名称解析(包括重载)?
我喜欢自然语言算法或流程图.
C++标准当然有这套规则,但随着新语言语句的引入而逐渐形成,结果很难记住.
总而言之,我想知道" 当它看到名字'A'时编译器会做什么的完整而详细的答案?"
我知道C++就是" 我们在X时这样做,但如果Z持有则不是Y "所以,我在问是否有可能使它更加线性.
编辑:我正在研究这个主题的草稿,一旦发布,可以集体改进.然而,这些天我很忙,可能需要时间来宣传一些东西.如果有兴趣我会将"关于原始txt文件的个人笔记"推广到更好的东西并发布.
可能重复:
为什么C++参数范围会影响命名空间中的函数查找?
今天我经历了这种奇怪的行为.我可以先调用strangeFn using namespace Strange,但不允许调用strangeFn2为什么?
namespace Strange
{
struct X
{
};
void strangeFn(X&) {}
void strangeFn2(int) {}
}
int main()
{
Strange::X x;
strangeFn(x); // GCC allows calling this function.
strangeFn2(0); // Error: strangeFn2 is not declared in this scope.
return 0;
}
Run Code Online (Sandbox Code Playgroud)
C++编译器如何解决符号的范围?