簡體   English   中英

匿名空的未標記的類,結構,聯合和枚舉

[英]anonymous empty untagged classes, structs, unions, and enums

!免責聲明! :請注意,我在談論無標記的聲明。 我知道這是一個非正式的術語,我的意思是聲明不是typedef而且它不聲明匿名類型的對象。 在這些情況下,一切都很清楚。

問題1:
以下哪一項是一個結構良好的C ++程序? (多項選擇)

//One
int main(){
   struct{}; //or class{}; should be the same
}
//Two  
int main(){
   enum{}; 
}
//Three
int main(){
   union{}; 
}

備注:
MSVC9.0接受這三個。 在第一,它發出警告。 在第二和第三位,我們得到0錯誤和0警告。 在線漫畫僅接受第三,第一和第二,無法編譯診斷消息“聲明不聲明任何內容”。 如果在第二個中,匿名枚舉包含至少一個枚舉器,則getau編譯器正確地接受第二個枚舉。

如果comeau編譯器是正確的,這是標准行為,那么我看到它有些不一致。 我能理解為什么第一名應該被拒絕。 我也理解為什么第二號應該被拒絕(沒有聲明),但在這種情況下,第三號也應該被拒絕。 如果第三個不應該被拒絕,那么我在第一個看到的唯一區別是,一個無趣的聯盟成員的范圍是外部范圍。 但是枚舉的情況也是如此,因此,我的主張是,如果第三個被接受,那么第二個應該被接受。

問題2:
如果考慮是正確的,我在上述判斷中缺少哪些考慮因素?

PS我已經寫了一封電子郵件給了我的支持。 我會在收到答案后立即發布答案。

這些都不合法。 見[dcl.dcl]第3段。

暫無
暫無

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

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