Difference between revisions of "C++17 support in compilers"

From KlayGE
Jump to: navigation, search
Line 4: Line 4:
 
! Language Feature !! Proposal !! MSVC !! GCC !! ICC !! Clang !! Alternative
 
! Language Feature !! Proposal !! MSVC !! GCC !! ICC !! Clang !! Alternative
 
|-
 
|-
| static_assert with no message || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3928.pdf N3928] || {{No}}No || {{No}}No || {{No}}No || {{Yes}}3.5 || C++11's static_assert
+
| static_assert with no message || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3928.pdf N3928] || {{No}}No || {{Yes}}6.0 || {{No}}No || {{Yes}}3.5 || C++11's static_assert
 
|-
 
|-
| Disabling trigraph expansion by default || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4086.html N4086] || {{Yes}}12.0 || {{No}}No || {{No}}No || {{Yes}}3.5 ||
+
| Disabling trigraph expansion by default || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4086.html N4086] || {{Yes}}12.0 || {{Yes}}5.1 || {{No}}No || {{Yes}}3.5 ||
 
|-
 
|-
 
| typename in a template template parameter || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4051.html N4051] || {{Yes}}14.0 || {{No}}No || {{No}}No || {{Yes}}3.5 ||
 
| typename in a template template parameter || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4051.html N4051] || {{Yes}}14.0 || {{No}}No || {{No}}No || {{Yes}}3.5 ||
 
|-
 
|-
| New auto rules for direct-list-initialization || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3922.html N3922] || {{Yes}}14.0 || {{No}}No || {{No}}No || {{No}}No ||
+
| New auto rules for direct-list-initialization || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3922.html N3922] || {{Yes}}14.0 || {{No}}No || {{No}}No || {{Yes}}3.8 ||
 
|-
 
|-
| Fold expressions || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4295.html N4295] || {{No}}No || {{No}}No || {{No}}No || {{Yes}}3.6 ||
+
| Fold expressions || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4295.html N4295] || {{No}}No || {{Yes}}6.0 || {{No}}No || {{Yes}}3.6 ||
 
|-
 
|-
 
| Attributes for namespaces and enumerators || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4266.html N4266] || {{Yes}}14.0 || {{No}}No || {{No}}No || {{Yes}}3.6 ||
 
| Attributes for namespaces and enumerators || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4266.html N4266] || {{Yes}}14.0 || {{No}}No || {{No}}No || {{Yes}}3.6 ||
 
|-
 
|-
| u8 character literals || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4267.html N4267] || {{Yes}}14.0 || {{No}}No || {{No}}No || {{Yes}}3.6 ||
+
| u8 character literals || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4267.html N4267] || {{Yes}}14.0 || {{Yes}}6.0 || {{No}}No || {{Yes}}3.6 ||
 
|-
 
|-
| Nested namespace definition || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4230.html N4230] || {{No}}No || {{No}}No || {{No}}No || {{Yes}}3.6 ||
+
| Nested namespace definition || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4230.html N4230] || {{No}}No || {{Yes}}6.0 || {{No}}No || {{Yes}}3.6 ||
 
|-
 
|-
| Allow constant evaluation for all non-type template arguments || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4268.html N4268] || {{No}}No || {{No}}No || {{No}}No || {{Yes}}3.6 ||
+
| Allow constant evaluation for all non-type template arguments || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4268.html N4268] || {{No}}No || {{Yes}}6.0 || {{No}}No || {{Yes}}3.6 ||
 
|}
 
|}
  

Revision as of 03:20, 24 June 2016

C++17 Core Language Features

Language Feature Proposal MSVC GCC ICC Clang Alternative
static_assert with no message N3928 No 6.0 No 3.5 C++11's static_assert
Disabling trigraph expansion by default N4086 12.0 5.1 No 3.5
typename in a template template parameter N4051 14.0 No No 3.5
New auto rules for direct-list-initialization N3922 14.0 No No 3.8
Fold expressions N4295 No 6.0 No 3.6
Attributes for namespaces and enumerators N4266 14.0 No No 3.6
u8 character literals N4267 14.0 6.0 No 3.6
Nested namespace definition N4230 No 6.0 No 3.6
Allow constant evaluation for all non-type template arguments N4268 No 6.0 No 3.6

See Also

C++11 support in compilers

C++14 support in compilers

References