常見編譯器對 C++ 新標準的支援


本文的資料是來自《The Growth of Modern C++ Support》這篇文章。在這篇文章裡面,作者是針對 VC++(Microsoft Visual C++)、gcc、clang 以及 ICC(Intel C++ Compiler)這幾個知名的 C++ 邊義器,去整理他們對於 C++ 的新標準的支援進度圖。

首先,是 C++ 11 的部分(點下去可以看大圖):

可以看到,C++ 11 的標準是在 2011 年完成的,不過各家編譯器都是到了 2013 年後,才有較佳的支援度。率先支援的是 gcc,然後是 clang;而就算是最新版本,ICC 和 VC++ 也都還是沒能完整支援,其中 VC++ 的支援度是最差的。

而在 C++11 Concurrency 的支援的部分,各家的支援就更慢一點了。

這邊 clang 是第一個完整支援的,再來則是 gcc;VC++ 和 ICC 一樣沒有能完整支援,不過和前面不同是,VC++ 在這部分的支援算是不錯,至少有 gcc 4.8 / 4.9 水準。

再來,則是 C++ 14 的部分:

 

clang 相當早、甚至在標準完全定案前,就已經完整支援了。而 gcc 則是等到 5.0 才能完整支援。至於 VC++ 至少到了 2015 版,還能支援大概 50%,但是 ICC 感覺就很悲劇了…

最後,則是進行中的 C++17:

基本上,這邊就只有 clang 有資料了。不過說實話,對一個還在進行的標準,現在整理這個或許算是有點太早就是了。


雖然微軟在這幾年對於 Visual Studio 的更新的確變頻繁了,對於標準的接受度也變高了,但是從上面的資料可以看的出來,他還是比不上開放原始碼的 gcc 和 clang 啊!(就算到了 2015,OpenMP 還是只支援很久以前的 2.0…)

而 Intel 的 ICC…看來對於新標準的支援,似乎比 Heresy 預期的更糟糕了啊…(話說,Heresy 也好久沒動過他了)

對「常見編譯器對 C++ 新標準的支援」的想法

發表留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料