目前主流編譯器對C++11特性的支持情況
1. GCC編譯器(從編譯器GCC4.8.X的版本完全支持)
(1)目前C++11特性,之前成為C++0X特性,從GCC4.3的后續版本中逐步對C++11進行支持。
(2)從官方信息可以看到,目前從完全對C++11特性進行支持的是從編譯器GCC4.8.X的版本。

參考網址:https://gcc.gnu.org/projects/cxx-status.html#cxx11
2. Clang編譯器
Clang 是一個 C++ 編寫、基於 LLVM、發布於 LLVM BSD 許可證下的 C/C++/Objective C/Objective C++ 編譯器,其目標(之一)就是超越 GCC。
2013年4月,
Clang已經全面支持C++11標准,並開始實現C++1y特性(也就是C++14,這是C++的下一個小更新版本)。
3. VS提供的編譯器MSVC:
VS2013中,提供了大部分對於C++11的支持,
VS2015中,提供了幾乎全部的C++11的支持。
參考網址:
VS2015預覽版中的C++11/14/17 的特性
https://blogs.msdn.microsoft.com/c/2015/01/29/vs2015c111417/
集成開發環境情況
1. xcode
最新版本Xcode7。
Xcode3所使用的編譯器是gcc編譯器,而在Xcode4之后和版本中,Xcode所使用的編譯器已經替換成為新的LLVM編譯器。LLVM編譯器的前端是clang。
LLVM是構架
編譯器(compiler)的框架系統,2006年Chris Lattner加盟Apple Inc.並致力於LLVM在Apple開發體系中的應用。
2005年Apple雇了Chris Lattner,LLVM也相當於成了Apple的官方支持的
編譯器。
Apple已經將它用在
OpenCL的流水線優化,Xcode已經能使用llvm-gcc編譯代碼。
2011-12-02 LLVM3.0發布,LLVM包括了一系列子項目,它們也同步發布了新版本,如C/C++/
Objective-C前端Clang 3.0改進了C++
程序編譯支持;改進C++ 2011標准支持;實現支持即將發布的C1x標准的某些特性;更快的生成代碼,更快的編譯。
XCode自帶的編譯器。
2. VS201X
編譯器比較
1. Clang 開發事出有因
Apple 使用 LLVM 在不支持全部 OpenGL 特性的 GPU (Intel 低端顯卡) 上生成代碼 (JIT),令程序仍然能夠正常運行。之后 LLVM 與 GCC 的集成過程引發了一些不快,GCC 系統龐大而笨重,而 Apple 大量使用的 Objective-C 在 GCC 中優先級很低。此外 GCC 作為一個純粹的編譯系統,與 IDE 配合很差。加之許可證方面的要求,Apple 無法使用修改版的 GCC 而閉源。於是 Apple 決定從零開始寫 C family 的前端,也就是基於 LLVM 的 Clang 了。
Clang 的特性:
- 快:通過編譯 OS X 上幾乎包含了所有 C 頭文件的 carbon.h 的測試,包括預處理 (Preprocess),語法 (lex),解析 (parse),語義分析 (Semantic Analysis),抽象語法樹生成 (Abstract Syntax Tree) 的時間,Clang 是 Apple GCC 4.0 的 2.5x 快。(2007-7-25)
- 內存占用小:Clang 內存占用是源碼的 130%,Apple GCC 則超過 10x。
- 診斷信息可讀性強:我不會排版,推薦去網站觀看。其中錯誤的語法不但有源碼提示,還會在錯誤的調用和相關上下文的下方有~~~~~和^的提示,相比之下 GCC 的提示很天書。
- GCC 兼容性。
- 設計清晰簡單,容易理解,易於擴展增強。與代碼基礎古老的 GCC 相比,學習曲線平緩。
- 基 於庫的模塊化設計,易於 IDE 集成及其他用途的重用。由於歷史原因,GCC 是一個單一的可執行程序編譯器,其內部完成了從預處理到最后代碼生成的全部過程,中間諸多信息都無法被其他程序重用。Clang 將編譯過程分成彼此分離的幾個階段,AST 信息可序列化。通過庫的支持,程序能夠獲取到 AST 級別的信息,將大大增強對於代碼的操控能力。對於 IDE 而言,代碼補全、重構是重要的功能,然而如果沒有底層的支持,只使用 tags 分析或是正則表達式匹配是很難達成的
2. GCC 也有其優勢:
- 支持 JAVA/ADA/FORTRAN
- 當前的 Clang 的 C++ 支持落后於 GCC,參見 http://clang.llvm.org/cxx_status.html。(近日 Clang 已經可以自編譯,見http://www.phoronix.com/scan.php?page=news_item&px=Nzk2Mw)
- GCC 支持更多平台
- GCC 更流行,廣泛使用,支持完備
- GCC 基於 C,不需要 C++ 編譯器即可編譯
除去 Clang 之外,LLVM 還被用在 Gallium3D 中進行 JIT 優化,Xorg 中的 pixman 也有考慮使用 LLVM 來優化執行速度,llvm-lua 使用 LLVM 來編譯 Lua 代碼,gpuocelot 使用 LLVM 可以令 CUDA 程序無需重新編譯即可運行在多核 X86CPU、IBM Cell、支持 OpenCL 的設備之上...