簡體   English   中英

嵌套名稱說明符的名稱查找規則

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM