C++ 0x draft爲什麼要求將全局匿名工會聲明爲靜態?
9.5.6在一個名爲命名空間或在全局命名空間中聲明匿名工會應被宣佈爲靜態的。
爲什麼?
更新 -
基於巴特麪包車不收Schenau和洛薩的階躍響應,最好的解釋,到目前爲止可能是這樣的:
如果相同的全局匿名聯合在兩個翻譯單元遇到的(比方說,通過頭文件),那麼如何滿足一個定義規則呢?這兩個定義是否被視爲相同併合並在一起?或者這兩種定義被視爲不同?如果他們被視爲相同,那麼編譯器大概會做'魔術',否則它不會爲其他實體做。如果它們被視爲相同,那麼編譯器在沒有程序員的明確同意的情況下這樣做......所以我想明確的同意是被迫聲明爲靜態的。
這加上Bart van Ingen Schenau的迴應可能是迄今爲止最好的解釋。 – Vatsan 2010-11-02 16:25:24