Sponsored By

C++ status - a quick summary

Status of the implementation of the C++11 language standard in four different compilers.

Bartlomiej Filipek, Blogger

January 6, 2014

9 Min Read
Game Developer logo in a gray background | Game Developer

C++11 conformance 

  • GCC 4.81 - 100%

  • Clang 3.3 - 100%

  • Intel 14.0 - 84%

  • Visual C++ 2013 - 66%

Another year is almost over so it is a good time to check what is going on with C++. This time more stats and real data.

Chart

This chart provides a general view on C++11 conformance. Percentage comes from counting implemented features in a given compiler according to the list of 45 C++11 language features. Please note that the view may be a bit imperfect or unfair. One language feature can have more "value"/importance than some other. For instance "extern template" vs "constxpr". Or "long long" vs "delegating constructors". This would require to put partial factors for each feature. Additionally some features have several versions (like move orlambda) - only the latest version should be counted.

c++11 compiler conformance graph

Compiler

Conformance

GCC 4.6

73%

GCC 4.7

87%

GCC 4.81

100%

Clang 2.9

44%

Clang 3.0

76%

Clang 3.1

93%

Clang 3.2

93%

Clang 3.3

100%

Intel C++ 12

36%

Intel C++ 13

53%

Intel C++ 14

82%

MCVC 10.0

27%

MCVC 11.0

42%

MCVC 12.0

64%

MCVC 12.1 (NOV CTP)

80%

Data

I used wiki.apache.org/stdcxx as a base for my work. I've upgraded it and cleaned up a bit. Additionally compilers: HP, EDGE, IBM, Sun/Oracle, C++ Builder (front-end is based on Clang 3.1 now) and Digital Mars were removed.

C++11 language feature

Proposal

Alignment

N2341

4,8

12,1

3,0

Atomic operations

N2427

4,4

13,0

11,0

auto v1.0

N2546

4,4

12,0

10,0

C99 preprocessor

N1653

4,3

11,1

2,9

constexpr

N2235

4,6

14,0

12,1

decltype v1.0

N2343

4,3

12,0

10,0

decltype v1.1

N3276

4,8

12,0

12,0

Defaulted And Deleted Functions

N2346

4,4

12,0

12,0

Delegating Constructors

N1986

4,7

14,0

12,0

Explicit conversion operators

N2437

4,5

13,0

12,0

Extended friend Declarations

N1791

4,7

11,0

10,0

extern template

N1987

3,3

9,0

6,0

Forward declarations for enums

N2764

4,6

14,0

11,0

Inheriting Constructors

N2540

4,8

12,1

3,3

Initializer Lists

N2672

4,4

13,0

12,0

Lambda v1.0

N2658

4,5

12,0

10,0

Lambda v1.1

N2927

4,5

12,0

11,0

Local and Unnamed Types as Template Arguments

N2657

4,5

12,0

8,0

long long

N1811

4,3

11,0

7,1

Namespace Association

N2535

4,4

14,0

2,9

New character types

N2249

4,4

14,0

2,9

New function declaration syntax for deduced return types

N2541

4,4

12,0

10,0

nullptr

N2431

4,6

12,1

10,0

Unicode String Literals

N2442

4,4

11,0

3,0

Raw String Literals

N2442

4,5

14,0

12,0

User-defined Literals

N2765

4,7

3,1

Right Angle Brackets

N1757

4,3

11,0

8,0

R-Value References, std::move v2.1

N2884+

4,5

14,0

11,0

R-Value References, std::move v3.0

N3053

4,5

14,0

3,0

static_assert

N1720

4,3

11,0

10,0

Strongly-typed enums

N2347

4,4

14,0

11,0

Template aliases

N2258

4,7

12,1

12,0

Thread-Local Storage

N2659

4,8

3,3

Unrestricted Unions

N2544

4,6

3,0

Built-in Type Traits

N1836

4,3

10,0

8,0

Variadic Templates v0.9

N2242

4,3

12,1

12,0

Variadic Templates v1.0

N2555

4,4

12,0

2,9

Range-based for-loop

N2930

4,6

13,0

11,0

override and final v1.0

N3272

4,7

14,0

11,0

Attributes

N2761

4,8

12,1

3,3

ref-qualifiers

N2439

4,81

14,0

12,1

Non-static data member initializers

N2756

4,7

14,0

12,0

Extended sizeof

N2253

4,4

12,1

3,1

Allowing move constructors to throw [noexcept]

N3050

4,6

14,0

12,1

Dynamic initialization and destruction with concurrency (Magic statics)

N2660

4,3

12,1

2,9

Remarks

  • Version 12.1 of MSVC means - November CTP, but this is not "official" of course.

  • long long support for VS: probably from the version 7.1, but before that it existed as a __int64

Resources

 

Orginally posted at bfilipek.com

Read more about:

Featured Blogs
Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like