【发布时间】:2017-04-03 23:05:45
【问题描述】:
在 C++ 中,名称绑定和名称查找有区别吗? C++14 标准工作草案 (N4296) 将 (3.4) 中的名称查找定义为
名称查找将名称的使用与该名称的声明 (3.1) 相关联。
我在标准中找不到名称绑定的定义,但他们的 XL C/C++ 编译器的 IBM 知识中心文档定义:
名称绑定是查找模板中显式或隐式使用的每个名称的声明的过程。
这两个定义之间的唯一区别似乎是(1)名称绑定专门指的是模板中使用的名称,(2)名称绑定指的是一个名称,而名称查找指的是使用 一个名字。
但是,C++ 标准中关于重载解决的第 (13.3) 节经常提到绑定,但没有定义它。在此上下文中使用“绑定”的方式使得绑定似乎是指参数与函数参数的关联。
起初,这个定义似乎与其他两个定义中的任何一个都不同,认为如果我们假设 函数的名称 被绑定到其通过比较参数和参数的类型来声明。这不完全是第 (13.3) 节中使用的含义,但我试图在没有正确定义的情况下理解标准。
简而言之,如果有人对“名称绑定”或“绑定”有一个好的定义,我将不胜感激。
【问题讨论】:
-
“但是,C++ 标准中关于重载解决的第 (13.3) 节经常提到绑定”但不是名称绑定,它在整个文档中只使用一次,可能是一个错误。
标签: c++ binding name-lookup