[英]Name lookup rules for nested-name-specifier
我已閱讀以下內容(3.4.3 / 1):
如果在嵌套名稱說明符中的::作用域解析運算符之前沒有decltype-specifier,則在:::之前的名稱查找僅考慮專門針對類型的名稱空間,類型和模板。
嵌套名稱說明符的查找規則是什么?
例如:
#include <iostrem>
namespace A
{
int j=5;
}
int main()
{
std::cout << A::j //I assume that A will be searched as just *unqualified-name* appeared inside the function which is a member of namespace
}
第二個例子:
namespace A
{
namespace B
{
int j=5;
}
}
int main()
{
std::cout << A::B::j
}
在第二個示例中,A :: B是否將在名稱空間中看起來是合格名稱,這是真的嗎? 也就是說,我們可以歸納定義嵌套名稱說明符查找的規則。 但我在標准中找不到類似的內容。 真的嗎?
是的,它是歸納性的,我想說的只是從措辭上得出的。 首先,讓我們基於::
的關聯性添加完整的括號:
(std::cout) << ((A::B)::j)
(以上內容只是為了演示解析器如何理解優先級,它不是有效的代碼)。
因此j
由名稱A::B
限定。 這是一個合格的名稱,因此根據3.4.3進行了查找。
A::B
本身是一個限定名稱(符合5.1.1 / 8概述的語法形式),因此會根據規則查找限定名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.