Quantcast
Channel: Bartek's coding blog
Viewing all articles
Browse latest Browse all 325

C++ status at the end of 2013

$
0
0

statictic
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 compared to my post from the previous year.
Plan

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 or lambda) - only the latest version should be counted.
c++11 compiler conformance graph
CompilerConformance
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 GCCIntel C++MSVCClang
Alignment N23414,8 12,1 3,0
Atomic operations N24274,4 13,0 11,0 3,1
auto v1.0 N25464,4 12,0 10,0 2,9
C99 preprocessor N16534,3 11,1 2,9
constexpr N22354,6 14,0 12,1 3,1
decltype v1.0 N23434,3 12,0 10,0 2,9
decltype v1.1 N32764,8 12,0 12,0 2,9
Defaulted And Deleted Functions N23464,4 12,0 12,0 3,0
Delegating Constructors N19864,7 14,0 12,0 3,0
Explicit conversion operators N24374,5 13,0 12,0 3,0
Extended friend Declarations N17914,7 11,0 10,0 2,9
extern template N19873,3 9,0 6,0 2,9
Forward declarations for enums N27644,6 14,0 11,0 3,1
Inheriting Constructors N25404,8 12,1 3,3
Initializer Lists N26724,4 13,0 12,0 3,1
Lambda v1.0 N26584,5 12,0 10,0 3,1
Lambda v1.1 N29274,5 12,0 11,0 3,1
Local and Unnamed Types as Template Arguments N26574,5 12,0 8,0 2,9
long long N18114,3 11,0 7,1 2,9
Namespace Association N25354,4 14,0 2,9
New character types N22494,4 14,0 2,9
New function declaration syntax for deduced return types N25414,4 12,0 10,0 2,9
nullptr N24314,6 12,1 10,0 2,9
Unicode String Literals N24424,4 11,0 3,0
Raw String Literals N24424,5 14,0 12,0 3,0
User-defined Literals N27654,7 3,1
Right Angle Brackets N17574,3 11,0 8,0 2,9
R-Value References, std::move v2.1 N2884+4,5 14,0 11,0 3,0
R-Value References, std::move v3.0 N30534,5 14,0 3,0
static_assert N17204,3 11,0 10,0 2,9
Strongly-typed enums N23474,4 14,0 11,0 2,9
Template aliases N22584,7 12,1 12,0 3,0
Thread-Local Storage N26594,8 3,3
Unrestricted Unions N25444,6 3,0
Built-in Type Traits N18364,3 10,0 8,0 3,0
Variadic Templates v0.9 N22424,3 12,1 12,0 2,9
Variadic Templates v1.0 N25554,4 12,0 2,9
Range-based for-loop N29304,6 13,0 11,0 3,0
override and final v1.0 N32724,7 14,0 11,0 2,9
Attributes N27614,8 12,1 3,3
ref-qualifiers N24394,81 14,0 12,1 2,9
Non-static data member initializers N27564,7 14,0 12,0 3,0
Extended sizeof N22534,4 12,1 3,1
Allowing move constructors to throw [noexcept] N30504,6 14,0 12,1 3,0
Dynamic initialization and destruction with concurrency (Magic statics) N26604,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

Changes
Changes

  • 05 Jan 2014
    • Added "noexcept" and "extended sizeof" feature, 
    • Included more features implemented in VS Nov CTP.
    • Removed "auto v0.9", r-value 1.0 and 2.0
    • minor changes, layout, colors
  • 31 Dec 2013 - initial version

Resources


Viewing all articles
Browse latest Browse all 325

Trending Articles