自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

幾個(gè)C編譯器對(duì) C++ 11特性的支持

開(kāi)發(fā) 后端
GCC的下個(gè)版本是4.8,以及Clang即將到來(lái)的版本是3.3 。如果你使用Visual Studio 2012,你可以安裝2012年11月更新支持C++11額外特征的體驗(yàn)版CTP。

距離我上次對(duì)C++11支持的不同編譯器的比較已經(jīng)有大半年了。這次我來(lái)根據(jù)這些預(yù)覽版的編譯器的文檔來(lái)看下它們是如何堆砌起來(lái)的。

GCC的下個(gè)版本是4.8,以及Clang即將到來(lái)的版本是3.3 。如果你使用Visual Studio 2012,你可以安裝2012年11月更新支持C++11額外特征的體驗(yàn)版CTP。

我也對(duì)V.13.0的Intel C++編譯器感到好奇,雖然它還不是預(yù)覽版并且我也找不到有關(guān)它的新特性的信息。我沒(méi)找到任何有關(guān)這個(gè)即將發(fā)行版本的編譯器的信息。

Feature VS2012
Nov CTP
g++ 4.8 Clang 3.3 Intel 13.0
auto Yes Yes Yes Yes
decltype Yes Yes Yes Yes
Rvalue references and move semantics Yes Yes Yes Yes
Lambda expressions Yes Yes Yes Yes
nullptr Yes Yes Yes Yes
static_assert Yes Yes Yes Yes
Range based for loop Yes Yes Yes Yes
Trailing return type in functions Yes Yes Yes Yes
extern templates Yes Yes Yes Yes
>> for nested templates Yes Yes Yes Yes
Local and unnamed types as template arguments Yes Yes Yes Yes
Variadic macros Yes Yes Yes Yes
Variadic templates Yes Yes Yes Yes
Default template arguments in function templates Yes Yes Yes Yes
final method keyword Yes Yes Yes No
override method keyword Yes Yes Yes No
Strongly typed enums Yes Yes Yes Partial
Forward declared enums Yes Yes Yes Partial
Initializer lists Yes Yes Yes Partial
explicit type conversion operators Yes Yes Yes No
Raw string literals Yes Yes Yes No
Forwarding constructors Yes Yes Yes No
Template aliases No Yes Yes Yes
Defaulted methods No Yes Yes Yes
Deleted methods No Yes Yes Yes
New built-in types Partial Yes Yes Partial
Alignment support Partial Yes Yes No
Inline namespaces No Yes Yes No
sizeof on non-static data members without an instance No Yes Yes No
Changed restrictions on union members No Yes Yes No
User defined literals No Yes Yes No
Encoding support in literals No Yes Yes No
Arbitrary expressions in template deduction contexts No Yes Yes Don’t know
Non-static data member initializers No Yes Yes Don’t know
noexcept No Yes Yes Partial
constexpr No Yes Yes Partial
C99 compatibility Partial Yes Partial Yes
Generalized attributes No Yes Partial Yes
Thread local storage Partial Yes No Partial
Inheriting constructors No Yes No No
Rvalue references for *this No No Yes No
Minimal support for garbage collection Yes No No Don’t know

看起來(lái)GCC正取代Clang成為最支持C++11的編譯器。Visual Studio已經(jīng)增加了好幾個(gè)重要C++11特性,像變參模板,初始化器和原生字。

我真的不能在一個(gè)更為細(xì)致的層面去評(píng)論這些編譯器實(shí)現(xiàn)到底完成得怎樣,還有沒(méi)有bug。(除了VS2012——我在我的書(shū)(《C++11 Rocks》)里詳細(xì)列出過(guò)VS2012最初版本的大量bug)。

看下庫(kù)的支持情況也是比較有用的。由于各編譯器對(duì)標(biāo)準(zhǔn)庫(kù)的支持都有較多小改動(dòng),我并不打算對(duì)此給出詳細(xì)的細(xì)節(jié)。我也打算在這次的比較中省略Intel的庫(kù)。

我可以說(shuō),這些庫(kù)的主要附件大多由第三方實(shí)現(xiàn)提供(隨后在下面的表格中展現(xiàn)),盡管這是有各種各樣的警告。

微軟的庫(kù)實(shí)現(xiàn)中沒(méi)有那些需求尚未被實(shí)現(xiàn)的語(yǔ)言功能的東西,例如 constexpr(如VS2012的最初發(fā)行版)。庫(kù)文件還沒(méi)有更新,以支持2012年11月在 CTP 提出的編譯器功能,如初始化列表和可變參數(shù)模板。

GCC 的 libstdc++ 也有些滯后,例如它并不支持正則表達(dá)式以及地稱并發(fā)功能。同樣,在很多情況下,它也沒(méi)有實(shí)現(xiàn) constexpr 方法。

Clang的libc++是100%兼容MacOS的,但是它有部分的特性還不兼容Windows和Linux。

Feature MSVC libstdc++ libc++
Concurrency: async/future/promise/packaged_task Yes Yes Yes
Concurrency: thread and related Yes Yes Yes
Concurrency: condition variables Yes Yes Yes
Concurrency: mutexes Yes Yes Yes
Concurrency: atomic types and operations Yes Yes Yes
Concurrency: relaxed memory ordering and fences Yes No Yes
Smart pointers Yes Yes Yes
Tuples Yes Yes Yes
std::bind Yes Yes Yes
std::function Yes Yes Yes
Regular expressions Yes No Yes
Type traits Yes Partial Yes
std::forward_list Yes Yes Yes
std::array Yes Yes Yes
Hash tables Yes Yes Yes
Random number generation Yes Yes Yes
Compile time rational numbers (ratio) Yes Yes Yes
Time utilities (chrono) Yes Yes Yes
Initializer lists Yes Yes Yes
Diagnostics (system_error) Yes Yes Yes
STL refinements and new algorithms Yes Yes Yes
General purpose (move, forward, declval etc.) Yes Yes Yes

比較高興的是能看到語(yǔ)言和庫(kù)的支持在穩(wěn)步改善。Clang和GCC距離完全支持C++11已經(jīng)很近了。Visual Studio同樣在改善對(duì)C++11的支持,令我感到欣慰的是C++編譯器的更新都是在主分支上。這份Intel的編譯器特征支持列表也越來(lái)越多。

誰(shuí)知道明年這4個(gè)編譯器會(huì)不會(huì)全部支持C++11的特征呢!

原文鏈接:http://www.oschina.net/translate/c11-compiler-support-shootout-visual-studio-gcc-clang-intel

英文原文:C++11 compiler support shootout: Visual Studio, GCC, Clang, Intel

責(zé)任編輯:張偉 來(lái)源: oschina
相關(guān)推薦

2010-01-12 16:42:59

C++編譯器

2010-01-15 16:37:28

Visual C++

2015-03-23 10:04:43

c++編譯器c++實(shí)現(xiàn)原理總結(jié)

2010-10-20 13:43:37

C++編譯器

2010-01-18 10:34:21

C++編譯器

2010-01-21 09:11:38

C++編譯器

2010-01-18 10:28:15

C++編譯器

2010-01-13 14:35:10

Visual C++

2010-01-27 14:48:55

優(yōu)秀C++編譯器

2010-01-21 09:26:53

CC++編譯器

2010-01-14 15:29:44

C++編譯器

2010-02-03 13:14:03

C++編譯器命令

2010-01-08 16:00:46

C++編譯器

2010-01-27 16:39:48

C++編譯器

2009-01-12 10:16:11

Visual C++編譯器選項(xiàng)設(shè)置

2010-01-14 14:55:14

C++編譯器

2010-01-27 13:53:40

強(qiáng)大的CC++編譯器

2023-12-07 19:19:21

C++模板代碼

2014-03-03 10:00:53

編譯器集成開(kāi)發(fā)環(huán)境

2010-01-22 16:55:52

C++編譯器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)