Difference between revisions of "C++17 support in compilers"
From KlayGE
Gongminmin (Talk | contribs) |
Gongminmin (Talk | contribs) |
||
(One intermediate revision by one user not shown) | |||
Line 32: | Line 32: | ||
| New specification for inheriting constructors (DR1941 et al) || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0136r1.html P0136R1] || {{No}}No || {{Yes}}7 || {{No}}No || {{Yes}}3.9 || | | New specification for inheriting constructors (DR1941 et al) || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0136r1.html P0136R1] || {{No}}No || {{Yes}}7 || {{No}}No || {{Yes}}3.9 || | ||
|- | |- | ||
− | | [[fallthrough]] attribute || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0188r1.pdf P0188R1] || {{Yes}}15.0 || {{Yes}}7 || {{No}}No || {{Yes}}3.9 || | + | | <nowiki>[[fallthrough]]</nowiki> attribute || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0188r1.pdf P0188R1] || {{Yes}}15.0 || {{Yes}}7 || {{No}}No || {{Yes}}3.9 || |
|- | |- | ||
− | | [[nodiscard]] attribute || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0189r1.pdf P0189R1] || {{No}}No || {{Yes}}7 || {{No}}No || {{Yes}}3.9 || | + | | <nowiki>[[nodiscard]]</nowiki> attribute || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0189r1.pdf P0189R1] || {{No}}No || {{Yes}}7 || {{No}}No || {{Yes}}3.9 || |
|- | |- | ||
− | | [[maybe_unused]] attribute || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0212r1.pdf P0212R1] || {{No}}No || {{Yes}}7 || {{No}}No || {{Yes}}3.9 || | + | | <nowiki>[[maybe_unused]]</nowiki> attribute || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0212r1.pdf P0212R1] || {{No}}No || {{Yes}}7 || {{No}}No || {{Yes}}3.9 || |
|- | |- | ||
| Aggregate initialization of classes with base classes || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0017r1.html P0017R1] || {{No}}No || {{Yes}}7 || {{No}}No || {{Yes}}3.9 || | | Aggregate initialization of classes with base classes || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0017r1.html P0017R1] || {{No}}No || {{Yes}}7 || {{No}}No || {{Yes}}3.9 || | ||
Line 91: | Line 91: | ||
*[https://gcc.gnu.org/projects/cxx-status.html C++ Standards Support in GCC] | *[https://gcc.gnu.org/projects/cxx-status.html C++ Standards Support in GCC] | ||
*[http://clang.llvm.org/cxx_status.html C++ Support in Clang] | *[http://clang.llvm.org/cxx_status.html C++ Support in Clang] | ||
+ | *[https://software.intel.com/en-us/articles/c17-features-supported-by-intel-c-compiler C++17 Features Supported by Intel® C++ Compiler] | ||
[[Category:Knowledge base]] | [[Category:Knowledge base]] | ||
[[zh:多种编译器对C++17的支持]] | [[zh:多种编译器对C++17的支持]] |
Latest revision as of 01:18, 2 January 2017
C++17 Core Language Features
Language Feature | Proposal | MSVC | GCC | ICC | Clang | Alternative |
---|---|---|---|---|---|---|
static_assert with no message | N3928 | 15.0 | 6 | 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 | 5 | 17.0 | 3.5 | |
New auto rules for direct-list-initialization | N3922 | 14.0 | 5 | 17.0 | 3.8 | |
Fold expressions | N4295 | No | 6 | No | 3.6 | |
Attributes for namespaces and enumerators | N4266 | 14.0 | 6 | No | 3.6 | |
u8 character literals | N4267 | 14.0 | 6 | 17.0 | 3.6 | |
Nested namespace definition | N4230 | 15.0 | 6 | 17.0 | 3.6 | |
Allow constant evaluation for all non-type template arguments | N4268 | No | 6 | No | 3.6 | |
Remove deprecated register storage class | P0001R1 | No | 7 | No | 3.8 | |
Remove deprecated bool increment | P0002R1 | No | 7 | No | 3.8 | |
Make exception specifications part of the type system | P0012R1 | No | 7 | No | No | |
__has_include in preprocessor conditionals | P0061R1 | No | 5 | No | Yes | |
New specification for inheriting constructors (DR1941 et al) | P0136R1 | No | 7 | No | 3.9 | |
[[fallthrough]] attribute | P0188R1 | 15.0 | 7 | No | 3.9 | |
[[nodiscard]] attribute | P0189R1 | No | 7 | No | 3.9 | |
[[maybe_unused]] attribute | P0212R1 | No | 7 | No | 3.9 | |
Aggregate initialization of classes with base classes | P0017R1 | No | 7 | No | 3.9 | |
constexpr lambda expressions | P0170R1 | No | 7 | No | No | |
Unary Folds and Empty Parameter Packs | P0036R0 | No | 6 | No | 3.9 | |
Differing begin and end types in range-based for | P0184R0 | 15.0 | 6 | No | 3.9 | |
Lambda capture of *this | P0018R3 | No | 7 | No | 3.9 | |
Direct-list-initialization of enums | P0138R2 | No | 7 | No | 3.9 | |
Hexadecimal floating-point literals | P0245R1 | No | 3.0 | No | Yes | |
Using attribute namespaces without repetition | P0028R4 | No | 7 | No | 3.9 | |
Dynamic memory allocation for over-aligned data | P0035R4 | No | 7 | No | No | |
Template argument deduction for class templates | P0091R3 | No | 7 | No | No | |
Non-type template parameters with auto type | P0127R2 | No | 7 | No | No | |
Guaranteed copy elision | P0135R1 | No | 7 | No | No | |
Stricter expression evaluation order | P0145R3 | No | 7 | No | No | |
Requirement to ignore unknown attributes | P0283R2 | No | Yes | No | Yes | |
constexpr if-statements | P0292R2 | No | 7 | No | 3.9 | |
Inline variables | P0386R2 | No | 7 | No | 3.9 | |
Structured bindings | P0217R3 | No | 7 | No | No | |
Separate variable and condition for if and switch | P0305R1 | No | 7 | No | 3.9 | |
Matching template template parameters to compatible arguments | P0522R0 | No | 7 | No | No | |
Removing deprecated dynamic exception specifications | P0003R5 | No | 7 | No | No | |
Pack expansions in using-declarations | P0195R2 | No | No | No | No |