簡體   English   中英

C ++ 11聲明`:: T i`?

[英]C++11 declaration `::T i`?

以下C ++ 11翻譯單元是否格式良好?

typedef int T;
::T i;

如果是這樣,它似乎與標准語法不匹配。

simple-type-specifier應該匹配::T ,但語法是:

simple-type-specifier:
    nested-name-specifier_opt type-name

並且nested-name-specifier不能匹配:: alone,因此simple-type-specifier不能匹配::T

這是標准缺陷嗎?

這是規格缺陷。 它在最新的草案N3691 (PDF)中修復 ,其中嵌套名稱說明符是:

nested-name-specifier:
    ::
    type-name ::
    namespace-name ::
    decltype-specifier ::
    nested-name-specifier identifier ::
    nested-name-specifier templateopt simple-template-id ::

(在C ++ 11中,缺少第一個生產, 嵌套名稱說明符 - > :: :)。

因此, 除了回答,僅僅作為澄清: ::identifier是指在全球命名空間(合格)的標識符。 所以是的,有問題的代碼實際上是格式正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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