我對the different meanings of a curly-brace enclosed list有疑問。爲什麼GCC 6.3在沒有明確的C++ 11支持的情況下編譯這個Braced-Init-List代碼?
我知道C++ 03不支持C++ 11的initializer_list
。然而,即使沒有-std=c++11
編譯器標誌,GCC 6.3 will properly initialize interpolate
與此代碼:
map<string, string> interpolate = { { "F", "a && b && c" }, { "H", "p^2 + w" }, { "K", "H > 10 || e < 5" }, { "J", "F && !K" } };
爲什麼這會工作I was challenged,我意識到我沒有答案。這是一個Brace-Init-List,但是我們從初始化標準容器的方式通常是通過initializer_list
。那麼非C++ 11代碼將如何完成初始化?
我很驚訝,這個問題提出'熱門網絡問題'列表:我認爲這是由海灣合作委員會和互聯網上的幾個地方很好的文檔記錄在新gcc的默認編譯標誌 – P0W
@ P0W我也有點驚訝。當我問它時,我假設,與gcc 5中的默認行爲類似,我使用「-std = C++ 98」。我猜想很多人碰巧遇到誰有同樣的偏見。別擔心,我相信這只是一個畸變,常規的C++的投票率應儘快恢復。 –