Difference between revisions of "多种编译器对C++17的支持"

From KlayGE
Jump to: navigation, search
Line 88: Line 88:
 
== 参考 ==
 
== 参考 ==
 
*[http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx C++11/14/17 Features In VS 2015 RTM]
 
*[http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx C++11/14/17 Features In VS 2015 RTM]
 +
*[https://blogs.msdn.microsoft.com/vcblog/2016/10/07/compiler-tools-layout-in-visual-studio-15/ C++14/17 Features and STL Fixes in VS “15” Preview 5]
 
*[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]

Revision as of 00:46, 2 January 2017

C++17核心语言功能

功能 提案 MSVC GCC ICC Clang 替代方案
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 No 3.5
New auto rules for direct-list-initialization N3922 14.0 5 No 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 No 3.6
Nested namespace definition N4230 15.0 6 No 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

相关内容

多种编译器对C++11的支持

多种编译器对C++14的支持

参考