Kesesuaian standar untuk pengompilasi Microsoft C/C++ di Visual Studio (MSVC) adalah pekerjaan yang sedang berlangsung. Berikut adalah ringkasan bahasa dan pustaka ISO Standar C dan C++ berdasarkan versi Visual Studio. Setiap pengompilasi C++ dan nama fitur pustaka standar memiliki tautan ke makalah proposal ISO Standar C++ yang menjelaskan fitur tersebut, ketika tersedia pada waktu publikasi. Kolom Didukung mencantumkan versi Visual Studio tempat dukungan untuk fitur tersebut pertama kali muncul.
Untuk detail tentang peningkatan kesuaian, lihat peningkatan kesuaian C++ dalam Visual Studio. Untuk daftar perubahan lain, lihat Apa yang Baru untuk Microsoft C++ di Visual Studio. Untuk perubahan kesuaian dalam versi sebelumnya, lihat Riwayat perubahan Visual C++ dan Visual C++ Apa yang Baru 2003 hingga 2015. Untuk berita terkini dari tim C++, kunjungi blog tim C++.
Fitur pengompilasi C++
| Feature |
Supported |
|
Fitur bahasa C++03/11 Core |
Supported |
| Segala sesuatu yang lain |
VS 2015 A |
| Pencarian nama dua fase |
VS 2017 15,7 B |
N2634 Expression SFINAE |
VS 2017 15.7 |
N1653 C99 preprocessor |
VS 2019 16.6 C |
|
Fitur bahasa inti C++03/11 (Laporan cacat) |
Supported |
|
Fitur bahasa C++14 Core |
Supported |
N3323 Tweaked wording for contextual conversions |
VS 2013 |
N3472 Binary literals |
VS 2015 |
N3638 auto and decltype(auto) return types |
VS 2015 |
N3648 init-captures |
VS 2015 |
N3649 Generic lambdas |
VS 2015 |
N3760 [[deprecated]] attribute |
VS 2015 |
N3778 Sized deallocation |
VS 2015 |
N3781 Digit separators |
VS 2015 |
N3651 Variable templates |
VS 2015 Pembaruan 2 |
N3652 Extended constexpr |
VS 2017 15.0 |
N3653 Default member initializers for aggregates |
VS 2017 15.0 |
|
Fitur bahasa C++17 Core |
Supported |
N4086 Removing trigraphs |
VS 2010 14 |
N3922 New rules for auto with braced-init-lists |
VS 2015 14 |
N4051 typename in template template-parameters |
VS 2015 14 |
N4266 Attributes for namespaces and enumerators |
VS 2015 14 |
N4267 u8 character literals |
VS 2015 14 |
N4230 Nested namespace definitions |
VS 2015.3 17 |
N3928 Terse static_assert |
VS 2017 15,0 17 |
P0184R0 Generalized range-based for-loops |
VS 2017 15,0 14 |
P0188R1 [[fallthrough]] attribute |
VS 2017 15,0 17 |
P0001R1 Removing the register keyword |
VS 2017 15,3 17 |
P0002R1 Removing operator++ for bool |
VS 2017 15,3 17 |
P0018R3 Capturing *this by value |
VS 2017 15,3 17 |
P0028R4 Using attribute namespaces without repetition |
VS 2017 15,3 17 |
P0061R1 __has_include |
VS 2017 15,3 14 |
P0138R2 Direct-list-init of fixed enums from integers |
VS 2017 15,3 17 |
P0170R1 constexpr lambdas |
VS 2017 15,3 17 |
P0189R1 [[nodiscard]] attribute |
VS 2017 15,3 17 |
P0212R1 [[maybe_unused]] attribute |
VS 2017 15,3 17 |
P0217R3 Structured bindings |
VS 2017 15,3 17 |
P0292R2 constexpr if-statements |
VS 2017 15,3 D |
P0305R1 Selection statements with initializers |
VS 2017 15,3 17 |
P1381R1 Reference capture of structured bindings |
VS 2017 15,3 17 |
P0245R1 Hexfloat literals |
VS 2017 15,5 17 |
N4268 Allowing more non-type template args |
VS 2017 15,5 17 |
N4295 Fold expressions |
VS 2017 15,5 17 |
P0003R5 Removing dynamic-exception-specifications |
VS 2017 15,5 17 |
P0012R1 Adding noexcept to the type system |
VS 2017 15,5 17 |
P0035R4 Over-aligned dynamic memory allocation |
VS 2017 15,5 17 |
P0386R2 Inline variables |
VS 2017 15,5 17 |
P0522R0 Matching template template-parameters to compatible arguments |
VS 2017 15,5 17 |
P0036R0 Removing some empty unary folds |
VS 2017 15,5 17 |
N4261 Fixing qualification conversions |
VS 2017 15,7 17 |
P0017R1 Extended aggregate initialization |
VS 2017 15,7 17 |
P0091R3 Template argument deduction for class templates P0512R0 Class template argument deduction issues |
VS 2017 15,7 17 |
P0127R2 Declaring non-type template parameters with auto |
VS 2017 15,7 17 |
P0135R1 Guaranteed copy elision |
VS 2017 15.6 |
P0136R1 Rewording inheriting constructors |
VS 2017 15,7 17 |
P0137R1 std::launder |
VS 2017 15,7 17 |
P0145R3 Refining expression evaluation order P0400R0 Order of evaluation of function arguments |
VS 2017 15,7 17 |
P0195R2 Pack expansions in using-declarations |
VS 2017 15,7 17 |
P0283R2 Ignoring unrecognized attributes |
VS 2015 14 |
|
Fitur bahasa C++17 Core (Laporan cacat) |
Supported |
P0702R1 Fixing class template argument deduction for initializer-list ctors |
VS 2017 15,7 17 |
P0961R1 Relaxing the structured bindings customization point finding rules |
VS 2019 16.0 17 |
P0969R0 Allowing structured bindings to accessible members |
VS 2019 16.0 17 |
P0588R1 Simplifying implicit lambda capture |
VS 2019 16,4 17 |
P1771R1 [[nodiscard]] for constructors |
VS 2019 16,4 17 |
P1825R0 Merged wording for P0527R1 and P1155R3, more implicit moves |
VS 2019 16,4 17 |
P0929R2 Checking for abstract class types |
VS 2019 16,5 17 |
P0962R1 Relaxing the range-for loop customization point finding rules |
VS 2019 16,5 17 |
P0859R0 CWG 1581: When are constexpr member functions defined |
Parsial di VS 2019 16.7 E, Penuh di VS 2022 17.1 |
P1009R2 Array size deduction in new-expressions |
VS 2019 16,7 17 |
P1286R2 Contra CWG DR1778 |
VS 2019 16,8 17 |
|
Fitur bahasa C++20 Core |
Supported |
P0641R2 const mismatch with defaulted copy constructor |
VS 2015 14 |
P0704R1 Fixing const lvalue ref-qualified pointers to members |
VS 2015 14 |
P1041R4 Make char16_t/char32_t string literals be UTF-16/32 |
VS 2015 14 |
P1330R0 Changing the active member of a union inside constexpr |
VS 2017 15,0 14 |
P0972R0 noexcept For <chrono> zero(), min(), max() |
VS 2017 15,7 14 |
P0515R3 Three-way (spaceship) comparison operator <=> |
VS 2019 16.0 20 |
P0941R2 Feature-test macros |
VS 2019 16.0 14 |
P1008R1 Prohibiting aggregates with user-declared constructors |
VS 2019 16.0 20 |
P0329R4 Designated initialization |
VS 2019 16.1 20 |
P0846R0 ADL and function templates that are not visible |
VS 2019 16.1 20 |
P0409R2 Allowing lambda-capture [=, this] |
VS 2019 16.2 20 |
P0428R2 Familiar template syntax for generic lambdas |
VS 2019 16.2 20 |
P0624R2 Default constructible and assignable stateless lambdas |
VS 2019 16.2 20 |
P0780R2 Allowing pack expansion in lambda init-capture |
VS 2019 16.2 20 |
P0806R2 Deprecate implicit capture of this via [=] |
VS 2019 16.2 20 |
P1120R0 Consistency improvements for <=> and other comparison operators |
VS 2019 16.2 20 |
P1185R2 <=> != == |
VS 2019 16.2 20 |
P0734R0 Concepts |
VS 2019 16,3 20 |
P0857R0 Fixing functionality gaps in constraints |
VS 2019 16,3 20 |
P1084R2 Today's return-type-requirements are insufficient |
VS 2019 16,3 20 |
P0892R2 Conditional explicit |
VS 2019 16,4 20 |
P1091R3 Extending structured bindings to be more like variable declarations |
VS 2019 16,4 20 |
P1099R5 Using enum |
VS 2019 16,4 20 |
P1186R3 When do you actually use <=> |
VS 2019 16,4 20 |
P1630R1 Spaceship needs a tune-up |
VS 2019 16,4 20 |
P0306R4 Adding __VA_OPT__ for comma omission and comma deletion |
VS 2019 16.5. Untuk memberikan kompatibilitas mundur yang lebih baik, __VA_OPT__ diaktifkan di semua /Zc:preprocessor versi bahasa. |
P0614R1 Range-based for-loops with initializers |
VS 2019 16,5 20 |
P0683R1 Default member initializers for bit-fields |
VS 2019 16,5 20 |
P1002R1 try-catch blocks in constexpr functions |
VS 2019 16,5 20 |
P1161R3 Deprecate uses of the comma operator in subscripting expressions |
VS 2019 16,5 20 |
P1301R4 [[nodiscard("message")]] |
VS 2019 16,5 20 |
P1703R1 Recognizing header unit imports requires full preprocessing |
VS 2019 16,5 20 |
P1946R0 Allow defaulting comparisons by value |
VS 2019 16,5 20 |
P0479R5 [[likely]] and [[unlikely]] attributes |
VS 2019 16,6 20 |
P0692R1 Relaxing access checking on specializations |
VS 2019 16,6 14 |
P0732R2 Class types in non-type template parameters |
VS 2019 16,6 20 |
P1139R2 Address wording issues related to ISO 10646 |
VS 2019 16,6 14 |
P1907R1 Inconsistencies with non-type template parameters |
VS 2019 16,6 20 |
P1971R0 US053: Mandate the return type for return_void and return_value to be void |
VS 2019 16,6 20 |
P1971R0 US065: Apply Coroutines issue 24 from P0664R8 |
VS 2019 16,6 20 |
P1979R0 Resolution to US086 |
VS 2019 16,6 20 |
P0388R4 Permit conversions to arrays of unknown bound |
VS 2019 16,7 20 |
P0466R5 Layout-compatibility and Pointer-interconvertibility Traits |
VS 2019 16,7 20 |
P0722R3 Efficient sized delete for variable sized classes |
VS 2019 16,7 20 |
P1094R2 Nested inline namespaces |
VS 2019 16,7 20 |
P1152R4 Deprecating volatile |
VS 2019 16,7 20 |
P1331R2 Permitting trivial default initialization in constexpr contexts |
VS 2019 16,7 20 |
P1358R0 2310: Type completeness and derived-to-base pointer conversions |
VS 2019 16,7 20 |
P1452R2 On the non-uniform semantics of return-type-requirements |
VS 2019 16,7 20 |
P1616R1 Using unconstrained TTPs with constrained templates |
VS 2019 16,7 20 |
P1814R0 CTAD for alias templates |
VS 2019 16,7 20 |
P1816R0 CTAD for aggregates |
VS 2019 16,7 20 |
P1957R1 Converting from T* to bool should be considered narrowing (re: US 212) |
VS 2019 16.7 DR |
P1968R0 CWG 2282: Consistency with mismatched aligned/non-over-aligned allocation/deallocation functions |
VS 2019 16,7 20 |
P1969R0 CWG 2280: Matching a usual deallocation function with placement new |
VS 2019 16,7 20 |
P1969R0 CWG 2382: Array allocation overhead for non-allocating placement new |
VS 2019 16,7 20 |
P1969R0 CWG 2441: Inline function parameters |
VS 2019 16,7 20 |
P1971R0 US052: Non-executed return statements in coroutines |
VS 2019 16,7 20 |
P1972R0 US105: Check satisfaction of constraints for non-templates when forming pointer to function |
VS 2019 16,7 20 |
P1980R0 CA096: Declaration matching for non-dependent requires-clauses |
VS 2019 16,7 20 |
P2082R1 Fixing CTAD for aggregates |
VS 2019 16,7 20 |
P2085R0 Consistent defaulted comparisons |
VS 2019 16,7 20 |
P2103R0 US033: Allow "import" inside linkage-specifications |
VS 2019 16,7 20 |
P2107R0 US064: Copy semantics of coroutine parameters |
VS 2019 16,7 20 |
P0912R5 Coroutines |
VS 2019 16,8 20 |
P1103R3 Modules |
VS 2019 16,8 20 |
P0315R4 Allowing lambdas in unevaluated contexts |
VS 2019 16,8 20 |
P0848R3 Conditionally trivial special member functions |
VS 2019 16,8 20 |
P0960R3 Allow initializing aggregates from a parenthesized list of values |
VS 2019 16,8 20 |
P1766R1 Mitigating minor modules maladies |
VS 2019 16,8 20 |
P1811R0 Relaxing redefinition restrictions for re-exportation robustness |
VS 2019 16,8 20 |
P1874R1 Dynamic Initialization Order of Non-Local Variables in Modules |
VS 2019 16,8 20 |
P1975R0 Fixing the wording of parenthesized aggregate-initialization |
VS 2019 16,8 20 |
P0634R3 Down with typename! |
VS 2019 16,9 20 |
P0784R7 More constexpr containers |
VS 2019 16,9 20 |
P0840R2 [[no_unique_address]] attribute |
VS 2019 16,9 20 |
P1064R0 Allowing virtual function calls in constant expressions |
VS 2019 16,9 20 |
P1141R2 Yet another approach for constrained declarations |
VS 2019 16,9 20 |
P1327R1 Allowing dynamic_cast, polymorphic typeid in constant expressions |
VS 2019 16,9 20 |
P1668R1 Permitting unevaluated inline assembly in constexpr functions |
VS 2019 16,9 20 |
P1073R3 Immediate functions |
VS 2019 16.10 20 |
P1143R2 constinit |
VS 2019 16.10 20 |
P1353R0 Missing feature-test macros |
VS 2019 16.10 20 |
P0735R1 Interaction of memory_order_consume with release sequences |
VS 2022 v17.14 |
P1236R1 Signed integers are two's complement |
VS 2022 v17.14 |
|
Fitur bahasa C++23 Core |
Supported |
P0330R8 Literal Suffix for (signed) size_t |
VS 2022 17.13 23 |
P0847R7 Deducing this |
VS 2022 17.13 23 |
P0849R8 auto(x): decay-copy in the language |
MSVC Build Tools versi 14.50 24 |
P1102R2 Down with ()! |
VS 2022 17.14 23 |
P1169R4 static operator() |
VS 2022 17.14 23 |
P1401R5 Narrowing contextual conversions to bool |
VS 2022 17.14 23 |
P1467R9 Extended floating-point types and standard names |
Tidak ada U |
P1774R8 Portable assumptions |
no |
P1787R6 Declarations and where to find them |
Tidak diperlukan perubahan |
P1847R4 Make declaration order layout mandated |
VS 2022 17,0 23 |
P1938R3 if consteval |
VS 2022 17.14 23 |
P1949R7 C++ Identifier Syntax using Unicode Standard Annex 31 |
MSVC Build Tools versi 14.50 24 |
P2029R4 Proposed resolution for core issues 411, 1656, and 2333; numeric and universal character escapes in character and string literals |
no |
P2036R3 Change scope of lambda trailing-return-type |
MSVC Build Tools versi 14.50 24 |
P2071R2 Named universal character escapes |
no |
P2128R6 Multidimensional subscript operator |
VS 2022 17.12 23 |
P2156R1 Allow Duplicate Attributes |
MSVC Build Tools versi 14.50 24 |
P2173R1 Attributes on Lambda-Expressions |
VS 2022 17.14 23 |
P2186R2 Remove Garbage Collection Support |
VS 2022 17,0 23 |
P2201R1 Mixed string literal concatenation |
VS 2022 17.14 |
P2223R2 Trimming whitespaces before line splicing |
MSVC Build Tools versi 14.50 24 |
P2242R3 Non-literal variables (and labels and gotos) in constexpr functions |
VS 2022 17.14 23 |
P2246R1 Character encoding of diagnostic text |
VS 2022 17,0 23 |
P2266R3 Simpler implicit move |
MSVC Build Tools versi 14.50 24 |
P2280R4 Using unknown pointers and references in constant expressions |
MSVC Build Tools versi 14.50 24 |
P2290R3 Delimited escape sequences |
MSVC Build Tools versi 14.50 24 |
P2295R6 Support for UTF-8 as a portable source file encoding |
V |
P2314R4 Character sets and encodings |
no |
P2316R2 Consistent character literal encoding |
VS 2022 17,0 23 |
P2324R2 Labels at the end of compound statements (C compatibility) |
no |
P2327R1 De-deprecating volatile compound operations |
VS 2022 v17.14 |
P2334R1 preprocessing directives elifdef and elifndef |
VS 2022 17.10 23 |
P2360R0 Extend init-statement to allow alias-declaration |
MSVC Build Tools versi 14.50 24 |
P2362R3 Remove non-encodable wide character literals and multicharacter wide character literals |
no |
P2437R1 Support for #warning |
MSVC Build Tools versi 14.50 24 |
P2448R2 Relaxing some constexpr restrictions |
no |
P2460R2 Relax requirements on wchar_t to match existing practices |
VS 2022 v17.14 |
P2468R2 The Equality Operator You Are Looking For |
VS 2022 17,6 23 |
P2493R0 Missing feature test macros for C++20 core papers |
MSVC Build Tools versi 14.50 24 |
P2513R4 char8_t Compatibility and Portability Fix |
VS 2022 17.4 DR |
P2579R0 Mitigation strategies for P2036 "Changing scope for lambda trailing-return-type" |
MSVC Build Tools versi 14.50 24 |
P2582R1 Wording for class template argument deduction from inherited constructors |
no |
Fitur pustaka Standar C++
Daftar fitur Pustaka Standar dan perbaikan bug yang lebih detail menurut versi produk tersedia di halaman Changelog wiki Microsoft STL GitHub.
Untuk informasi terbaru tentang pekerjaan kesuaian yang sedang berlangsung, lihat:
| Feature |
Supported |
|
Fitur pustaka Standar C++14 |
Supported |
N3462 SFINAE-Friendly result_of |
VS 2015.2 |
N3302 constexpr For <complex> |
VS 2015 |
N3469 constexpr For <chrono> |
VS 2015 |
N3470 constexpr For <array> |
VS 2015 |
N3471 constexpr For <initializer_list>, <tuple>, <utility> |
Visual Studio 2015 |
N3545 integral_constant::operator()() |
VS 2015 |
N3642 UDLs For <chrono>, <string> (1729ms, "meow"s, etc.) |
VS 2015 |
N3644 Null Forward Iterators |
VS 2015 |
N3654 quoted() |
VS 2015 |
N3657 Heterogeneous Associative Lookup |
VS 2015 |
N3658 integer_sequence |
VS 2015 |
N3659 shared_mutex (Timed) |
VS 2015 |
N3668 exchange() |
VS 2015 |
N3669 Fixing constexpr Member Functions Without const |
VS 2015 |
N3670 get<T>() |
VS 2015 |
N3671 Dual-Range equal(), is_permutation(), mismatch() |
VS 2015 (Visual Studio 2015) |
N3778 Sized Deallocation |
VS 2015 |
N3779 UDLs For <complex> (3.14i, etc.) |
Visual Studio 2015 |
N3789 constexpr For <functional> |
VS 2015 |
N3887 tuple_element_t |
VS 2015 |
N3891 Renaming shared_mutex (Timed) To shared_timed_mutex |
VS 2015 |
N3346 Minimal Container Element Requirements |
VS 2013 |
N3421 Transparent Operator Functors (less<>, etc.) |
VS 2013 |
N3655 Alias Templates For <type_traits> (decay_t, etc.) |
VS 2013 |
N3656 make_unique() |
VS 2013 |
|
Fitur pustaka Standar C++17 |
Supported |
N3911 void_t |
VS 2015 14 |
N4089 Safe Conversions In unique_ptr<T[]> |
VS 2015 14 |
N4169 invoke() |
VS 2015 14 |
N4190 Removing auto_ptr, random_shuffle(), And Old <functional> Stuff |
VS 2015 F |
N4258 noexcept Cleanups |
VS 2015 14 |
N4259 uncaught_exceptions() |
VS 2015 14 |
N4277 Trivially Copyable reference_wrapper |
VS 2015 14 |
N4279 insert_or_assign()/try_emplace() For map/unordered_map |
VS 2015 14 |
N4280 size(), empty(), data() |
VS 2015 14 |
N4366 Precisely Constraining unique_ptr Assignment |
VS 2015 14 |
N4387 Improving pair And tuple |
VS 2015.2 14 |
N4389 bool_constant |
VS 2015 14 |
N4508 shared_mutex (Untimed) |
VS 2015.2 14 |
N4510 Supporting Incomplete Types In vector/list/forward_list |
VS 2013 14 |
N4562 Library Fundamentals: <algorithm> sample() |
VS 2017 15.0 |
N4562 Library Fundamentals: <any> |
VS 2017 15.0 |
N4562 Library Fundamentals: <memory_resource> P0337R0 Deleting polymorphic_allocator Assignment |
VS 2017 15.6 |
N4562 Library Fundamentals: <optional> |
VS 2017 15.0 |
N4562 Library Fundamentals: <string_view> |
VS 2017 15.0 |
N4562 Library Fundamentals: <tuple> apply() |
VS 2017 15.0 |
N4562 Library Fundamentals: Boyer-Moore search() P0253R1 Fixing Searcher Return Types |
VS 2017 15,3 17 |
P0003R5 Removing Dynamic Exception Specifications |
VS 2017 15,5 17 |
P0004R1 Removing Deprecated Iostreams Aliases |
VS 2015.2 F |
P0005R4 not_fn() P0358R1 Fixes For not_fn() |
VS 2017 15,5 17 |
P0006R0 Variable Templates For Type Traits (is_same_v, etc.) |
VS 2015.2 14 |
P0007R1 as_const() |
VS 2015.2 14 |
P0013R1 Logical Operator Type Traits (conjunction, etc.) |
VS 2015.2 14 |
P0024R2 Parallel Algorithms P0336R1 Renaming Parallel Execution Policies P0394R4 Parallel Algorithms Should terminate() For Exceptions P0452R1 Unifying <numeric> Parallel Algorithms |
VS 2017 15,7 G |
P0025R1 clamp() |
VS 2015.3 |
P0030R1 hypot(x, y, z) |
VS 2017 15.7 |
P0031R0 constexpr For <array> (Again) And <iterator> |
VS 2017 15,3 17 |
P0032R3 Homogeneous Interface For variant/any/optional |
VS 2017 15.0 |
P0033R1 Rewording enable_shared_from_this |
VS 2017 15,5 14 |
P0040R3 Extending Memory Management Tools |
VS 2017 15,3 17 |
P0063R3 C11 Standard Library |
VS 2015 C11, 14 |
P0067R5 Elementary String Conversions |
VS 2019 16.4 |
P0074R0 owner_less<> |
VS 2015.2 14 |
P0077R2 is_callable, is_nothrow_callable |
VS 2017 15.0 |
P0083R3 Splicing Maps And Sets P0508R0 Clarifying insert_return_type |
VS 2017 15,5 17 |
P0084R2 Emplace Return Type |
VS 2017 15,3 17 |
P0088R3 <variant> |
VS 2017 15.0 |
P0092R1 <chrono> floor(), ceil(), round(), abs() |
VS 2015.2 14 |
P0152R1 atomic::is_always_lock_free |
VS 2017 15,3 17 |
P0154R1 hardware_destructive_interference_size, etc. |
VS 2017 15,3 17 |
P0156R0 Variadic lock_guard |
VS 2015.2 14 |
P0156R2 Renaming Variadic lock_guard to scoped_lock |
VS 2017 15,3 17 |
P0163R0 shared_ptr::weak_type |
VS 2017 15.0 |
P0174R2 Deprecating Vestigial Library Parts |
VS 2017 15,5 17 |
P0185R1 is_swappable, is_nothrow_swappable |
VS 2015.3 |
P0209R2 make_from_tuple() |
VS 2017 15.0 |
P0218R1 <filesystem> P0219R1 Relative Paths For Filesystem P0317R1 Directory Entry Caching For Filesystem P0392R0 Supporting string_view In Filesystem Paths P0430R2 Supporting Non-POSIX Filesystems P0492R2 Resolving NB Comments for Filesystem |
VS 2017 15,7 H |
P0220R1 Library Fundamentals V1 |
VS 2017 15.6 |
P0226R1 Mathematical Special Functions |
VS 2017 15.7 |
P0254R2 Integrating string_view And std::string |
VS 2017 15.0 |
P0258R2 has_unique_object_representations |
VS 2017 15.3 I |
P0272R1 Non-const basic_string::data() |
VS 2015.3 |
P0295R0 gcd(), lcm() |
VS 2017 15,3 17 |
P0298R3 std::byte |
VS 2017 15.3 17, J |
P0302R1 Removing Allocator Support In std::function |
VS 2017 15,5 17 |
P0307R2 Making Optional Greater Equal Again |
VS 2017 15.0 |
P0393R3 Making Variant Greater Equal |
VS 2017 15.0 |
P0403R1 UDLs For <string_view> ("meow"sv, etc.) |
VS 2017 15,3 17 |
P0414R2 shared_ptr<T[]>, shared_ptr<T[N]> P0497R0 Fixing shared_ptr For Arrays |
VS 2017 15,5 14 |
P0418R2 atomic compare_exchange memory_order Requirements |
VS 2017 15,3 14 |
P0426R1 constexpr For char_traits |
VS 2017 15.7 |
P0433R2 Integrating template deduction for class templates into the standard library P0739R0 Improving class template argument deduction integration into the standard library |
VS 2017 15.7 |
P0435R1 Overhauling common_type P0548R1 Tweaking common_type and duration |
VS 2017 15,3 14 |
P0504R0 Revisiting in_place_t/in_place_type_t<T>/in_place_index_t<I> |
VS 2017 15.0 |
P0505R0 constexpr For <chrono> (Again) |
VS 2017 15,3 17 |
P0510R0 Rejecting variants Of Nothing, Arrays, References, And Incomplete Types |
VS 2017 15.0 |
P0513R0 Poisoning hash P0599R1 noexcept hash |
VS 2017 15,3 14 |
P0516R0 Marking shared_future Copying As noexcept |
VS 2017 15,3 14 |
P0517R0 Constructing future_error From future_errc |
VS 2017 15,3 14 |
P0521R0 Deprecating shared_ptr::unique() |
VS 2017 15,5 17 |
P0558R1 Resolving atomic<T> Named Base Class Inconsistencies |
VS 2017 15,3 14 |
P0595R2 std::is_constant_evaluated() |
VS 2019 16,5 20 |
P0602R4 Propagating Copy/Move Triviality In variant/optional |
VS 2017 15,317 |
P0604R0 Changing is_callable/result_of To invoke_result, is_invocable, is_nothrow_invocable |
VS 2017 15,3 17 |
P0607R0 Inline Variables for the Standard Library |
VS 2017 15,5 17 |
P0618R0 Deprecating <codecvt> |
VS 2017 15,5 17 |
|
Fitur pustaka Standar C++17 (Laporan cacat) |
Supported |
P0682R1 Repairing Elementary String Conversions |
VS 2017 15,7 17 |
P1164R1 Making create_directory() Intuitive |
VS 2019 16.0 14 |
|
Fitur pustaka Standar C++20 |
Supported |
P0809R0 Comparing Unordered Containers |
VS 2010 14 |
P0858R0 Constexpr Iterator Requirements |
VS 2017 15,3 17 |
P0777R1 Avoiding Unnecessary Decay |
VS 2017 15,7 14 |
P0550R2 remove_cvref |
VS 2019 16.0 20 |
P0318R1 unwrap_reference, unwrap_ref_decay |
VS 2019 16.1 20 |
P0457R2 starts_with()/ends_with() For basic_string/basic_string_view |
VS 2019 16.1 20 |
P0458R2 contains() For Ordered And Unordered Associative Containers |
VS 2019 16.1 20 |
P0646R1 list/forward_list remove()/remove_if()/unique() Return size_type |
VS 2019 16.1 20 |
P0769R2 shift_left(), shift_right() |
VS 2019 16.1 20 |
P0887R1 type_identity |
VS 2019 16.1 20 |
P0020R6 atomic<float>, atomic<double>, atomic<long double> |
VS 2019 16.2 20 |
P0463R1 endian |
VS 2019 16.2 20 |
P0482R6 char8_t: A type for UTF-8 characters and strings |
VS 2019 16.2 20 |
P0600R1 [[nodiscard]] For The STL, Part 1 |
VS 2019 16.2 20 |
P0653R2 to_address() |
VS 2019 16.2 20 |
P0754R2 <version> |
VS 2019 16.2 20 |
P0771R1 noexcept For std::function's Move Constructor |
VS 2019 16.2 20 |
P0487R1 Fixing operator>>(basic_istream&, CharT*) |
VS 2019 16,3 20 |
P0616R0 Using move() In <numeric> |
VS 2019 16,3 20 |
P0758R1 is_nothrow_convertible |
VS 2019 16,3 20 |
P0898R3 Standard Library Concepts |
VS 2019 16,3 20 |
P0919R3 Heterogeneous Lookup For Unordered Containers |
VS 2019 16,3 20 |
P1754R1 Rename Concepts to standard_case |
VS 2019 16,4 20 |
P0325R4 to_array from LFTS with updates |
VS 2019 16,5 20 |
P0340R3 SFINAE-Friendly underlying_type |
VS 2019 16,5 14 |
P0356R5 bind_front() |
VS 2019 16,5 20 |
P0439R0 enum class memory_order |
VS 2019 16,5 20 |
P0553R4 <bit> Rotating And Counting Functions |
VS 2019 16,5 20 |
P0556R3 <bit> ispow2(), ceil2(), floor2(), log2p1() |
VS 2019 16,5 20 |
P0595R2 is_constant_evaluated() |
VS 2019 16,5 20 |
P0631R8 <numbers> Math Constants |
VS 2019 16,5 20 |
P0655R1 visit<R>() |
VS 2019 16,5 20 |
P0738R2 istream_iterator Cleanup |
VS 2019 16,5 14 |
P0767R1 Deprecating is_pod |
VS 2019 16,5 20 |
P0966R1 string::reserve() Should Not Shrink |
VS 2019 16,5 20 |
P1209R0 erase_if(), erase() |
VS 2019 16,5 20 |
P1227R2 Signed std::ssize(), Unsigned span::size() |
VS 2019 16,5 20 |
P1355R2 Narrow Contract For ceil2() |
VS 2019 16,5 20 |
P1357R1 is_bounded_array, is_unbounded_array |
VS 2019 16,5 20 |
P1612R1 Relocating endian To <bit> |
VS 2019 16,5 20 |
P1651R0 bind_front() Should Not Unwrap reference_wrapper |
VS 2019 16,5 20 |
P1690R1 Refining Heterogeneous Lookup For Unordered Containers |
VS 2019 16,5 20 |
P1902R1 Missing Feature-Test Macros 2017-2019 |
VS 2019 16,5 14 |
P0122R7 <span> P1024R3 Enhancing span usability P1085R2 Removing span comparisons P1394R4 Range constructor for span P1872R0 span should have size_type, not index_type |
VS 2019 16,6 20 |
P0202R3 constexpr for <algorithm> and exchange() |
VS 2019 16,6 20 |
P0357R3 Supporting Incomplete Types In reference_wrapper |
VS 2019 16,6 20 |
P0619R4 Removing C++17-Deprecated Features In C++20 |
VS 2019 16,6 20 |
P0879R0 constexpr for swapping functions |
VS 2019 16,6 20 |
P0883R2 Fixing atomic initialization |
VS 2019 16,6 14 |
P0935R0 Eradicating Unnecessarily Explicit Default Constructors |
VS 2019 16,6 14 |
P1006R1 constexpr For pointer_traits<T*>::pointer_to() |
VS 2019 16,6 20 |
P1165R1 Consistently Propagating Stateful Allocators In basic_string's operator+() |
VS 2019 16,6 14 |
P1423R3 char8_t backward compatibility remediation |
VS 2019 16,6 20 |
P1645R1 constexpr for <numeric> algorithms |
VS 2019 16,6 20 |
P0415R1 constexpr For <complex> (Again) |
VS 2019 16,7 20 |
P0476R2 <bit> bit_cast |
VS 2019 16,7 20 |
P0528R3 Atomic Compare-And-Exchange With Padding Bits |
VS 2019 16,7 20 |
P0586R2 Integer comparison functions |
VS 2019 16,7 20 |
P0674R1 make_shared() For Arrays |
VS 2019 16,7 20 |
P0718R2 atomic<shared_ptr<T>>, atomic<weak_ptr<T>> |
VS 2019 16,7 20 |
P1023R0 constexpr For std::array Comparisons |
VS 2019 16,7 20 |
P1115R3 erase()/erase_if() Return size_type |
VS 2019 16,7 20 |
P1831R1 Deprecating volatile in the standard library |
VS 2019 16,7 20 |
P1871R1 Concept traits should be named after concepts |
VS 2019 16,7 20 |
P1956R1 <bit> has_single_bit(), bit_ceil(), bit_floor(), bit_width() |
VS 2019 16,7 20 |
P1964R2 Replacing boolean With boolean-testable |
VS 2019 16,7 20 |
P1976R2 Fixed-size span construction from dynamic range |
VS 2019 16,7 20 |
P2091R0 Issues with range access CPOs |
VS 2019 16,7 20 |
P2102R0 Make "implicit expression variations" more explicit |
VS 2019 16,7 20 |
P2116R0 Remove tuple-like protocol support from fixed-extent span |
VS 2019 16,7 20 |
P0019R8 atomic_ref |
VS 2019 16,8 20 |
P0528R3 Library support for atomic compare-and-exchange with padding bits |
VS 2019 16,8 20 |
P0811R3 midpoint(), lerp() |
VS 2019 16,8 20 |
P0912R5 Library Support For Coroutines |
VS 2019 16,8 20 |
P1001R2 execution::unseq |
VS 2019 16,8 20 |
P1032R1 Miscellaneous constexpr |
VS 2019 16,8 20 |
P1065R2 constexpr INVOKE |
VS 2019 16,8 20 |
P1123R0 Editorial Guidance for merging P0019r8 and P0528r3 |
VS 2019 16,8 20 |
P1960R0 NB Comment Changes Reviewed by SG1 |
VS 2019 16,8 20 |
P0339R6 polymorphic_allocator<> |
VS 2019 16,9 20 |
P0660R10 <stop_token> and jthread |
VS 2019 16,9 20 |
P0768R1 Library Support For The Spaceship Comparison Operator <=> |
VS 2019 16,9 20 |
P1007R3 assume_aligned() |
VS 2019 16,9 20 |
P1020R1 Smart Pointer Creation With Default Initialization |
VS 2019 16,9 20 |
P1135R6 The C++20 Synchronization Library |
VS 2019 16,9 20 |
P1771R1 Library support for [[nodiscard]] for constructors |
VS 2019 16,9 20 |
P0053R7 <syncstream> P0753R2 osyncstream Manipulators |
VS 2019 16.10 20 |
P0355R7 <chrono> Calendars And Time Zones |
VS 2019 16.10 20abi |
P0408R7 Efficient access To basic_stringbuf's buffer |
VS 2019 16.10 20 |
P0466R5 Library support for layout-compatibility and pointer-interconvertibility traits |
VS 2019 16.10 20 |
P0475R1 Guaranteed Copy Elision For Piecewise Construction |
VS 2019 16.10 20 |
P0591R4 Utility Functions For Uses-Allocator Construction |
VS 2019 16.10 20 |
P0608R3 Improving variant's Converting Constructor/Assignment |
VS 2019 16.10 20 |
P0645R10 <format> Text Formatting |
VS 2019 16.10 20abi |
P0784R7 Library support for more constexpr containers |
VS 2019 16.10 20 |
P0896R4 <ranges> |
VS 2019 16.10 20abi |
P0980R1 constexpr std::string |
VS 2019 16.10 20, P |
P1004R2 constexpr std::vector |
VS 2019 16.10 20, P |
P1208R6 <source_location> |
VS 2019 16.10 20 |
P1502R1 Standard Library Header Units |
VS 2019 16.10 20 |
P1614R2 Adding Spaceship <=> To The Library |
VS 2019 16.10 20 |
P1285R0 Improving Completeness Requirements For Type Traits |
VS 2022 v17.14 |
|
Fitur pustaka Standar C++20 (Laporan cacat) |
Supported |
P2325R3 Views Should Not Be Required To Be Default Constructible |
VS 2022 17.0 20abi |
P2328R1 join_view should join all views of ranges |
VS 2022 17.0 20abi |
P2367R0 Remove misuses of list-initialization from clause 24 ranges |
VS 2022 17.0 20abi |
P2259R1 Partial LWG issue resolution: repairing Input Range Adaptors and counted_iterator |
VS 2022 17,0 23 |
|
Fitur pustaka Standar C++23 |
Supported |
P0288R9 move_only_function |
VS 2022 17,2 23 |
P0323R12 <expected> |
VS 2022 17,3 23 |
P0401R6 Providing Size Feedback In The Allocator Interface |
VS 2022 17,0 23 |
P0448R4 <spanstream> |
VS 2022 17.1 23 |
P0627R6 unreachable() |
VS 2022 17,2 23 |
P0798R8 Monadic Operations For optional |
VS 2022 17,2 23 |
P0849R8 auto(x): decay-copy In The Language |
VS 2022 17,4 23 |
P0881R7 <stacktrace> |
VS 2022 17,4 23 |
P0943R6 Supporting C Atomics In C++ |
VS 2022 17.1 23 |
P1048R1 is_scoped_enum |
VS 2022 17,0 23 |
P1072R10 basic_string::resize_and_overwrite |
VS 2022 17.1 23 |
P1132R7 out_ptr(), inout_ptr() |
VS 2022 17,0 23 |
P1147R1 Printing volatile Pointers |
VS 2022 17.1 23 |
P1206R7 Conversions From Ranges To Containers |
VS 2022 17,4 23 |
P1272R4 byteswap() |
VS 2022 17.1 23 |
P1328R1 constexpr type_info::operator==() |
VS 2022 17,4 23 |
P1413R3 Deprecate aligned_storage And aligned_union |
VS 2022 17,3 23 |
P1425R4 Iterator Pair Constructors For stack And queue |
VS 2022 17.1 23 |
P1518R2 Stop Overconstraining Allocators In Container Deduction Guides |
VS 2022 17.1 23 |
P1659R3 ranges::starts_with, ranges::ends_with |
VS 2022 17.1 23 |
P1679R3 contains() For basic_string/basic_string_view |
VS 2022 17,0 23 |
P1682R3 to_underlying() For Enumerations |
VS 2022 17,0 23 |
P1899R3 views::stride |
VS 2022 17,4 23 |
P1951R1 Default Template Arguments For pair's Forwarding Constructor |
VS 2022 17,0 23 |
P1989R2 Range Constructor For string_view |
VS 2022 17,0 23 |
P2077R3 Heterogeneous Erasure Overloads For Associative Containers |
VS 2022 17,2 23 |
P2136R3 invoke_r() |
VS 2022 17.1 23 |
P2162R2 Inheriting from std::variant |
VS 2022 17,0 17 |
P2166R1 Prohibit basic_string and basic_string_view from being constructed from nullptr |
VS 2022 17.0 23, R |
P2186R2 Removed garbage collection support |
VS 2022 17.0 23, Q |
P2251R1 Require span And basic_string_view To Be Trivially Copyable |
VS 2022 17.1 23 |
P2273R3 constexpr unique_ptr |
VS 2022 17,3 23 |
P2280R4 Using unknown pointers and references in constant expressions |
MSVC Build Tools versi 14.5 24 |
P2290R3 Delimited escape sequences |
MSVC Build Tools versi 14.5 24 |
P2291R3 constexpr Integral <charconv> |
VS 2022 17,4 23 |
P2302R4 ranges::contains, ranges::contains_subrange |
VS 2022 17,4 23 |
P2321R2 std::zip |
parsial dalam VS 2022 17,5 23 |
P2322R6 ranges::fold_left, ranges::fold_right, etc. |
VS 2022 17,5 23 |
P2360R0 Extend init-statement to allow alias-declaration |
MSVC Build Tools versi 14.5 24 |
P2387R3 Pipe Support For User-Defined Range Adaptors |
VS 2022 17,4 23 |
P2393R1 Cleaning Up Integer-Class Types |
VS 2022 17,2 23 |
P2401R0 Conditional noexcept For exchange() |
VS 2022 17.1 23 |
P2408R5 Ranges Iterators As Inputs To Non-Ranges Algorithms |
VS 2022 17,4 23 |
P2417R2 More constexpr bitset |
VS 2022 17,4 23 |
P2419R2 Clarify Handling Of Encodings In Localized Formatting Of chrono Types |
VS 2022 17,4 23 |
P2437R1 Support for #warning |
MSVC Build Tools versi 14.50 24 |
P2438R2 string::substr() && |
VS 2022 17,4 23 |
P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right |
VS 2022 17,4 23 |
P2441R2 views::join_with |
VS 2022 17,4 23 |
P2442R1 Windowing Range Adaptors: views::chunk, views::slide |
VS 2022 17,3 23 |
P2443R1 views::chunk_by |
VS 2022 17,3 23 |
P2445R1 forward_like() |
VS 2022 17,4 23 |
P2446R2 views::as_rvalue |
VS 2022 17,4 23 |
P2465R3 Standard Library Modules std And std.compat |
no |
P2494R2 Relaxing Range Adaptors To Allow Move-Only Types |
VS 2022 17,4 23 |
P2499R0 string_view Range Constructor Should Be explicit |
VS 2022 17,4 23 |
P2508R1 basic_format_string, format_string, wformat_string |
VS 2022 17,5 23 |
P2517R1 Conditional noexcept For apply() |
VS 2022 17,4 23 |
P2520R0 move_iterator<T*> Should Be A Random-Access Iterator |
VS 2022 17,4 23 |
P2549R1 unexpected<E>::error() |
VS 2022 17,3 23 |
Sekelompok makalah yang tercantum bersama menunjukkan fitur Standard bersama dengan satu atau beberapa penyempurnaan atau ekspansi yang disetujui. Fitur ini diimplementasikan bersama-sama.
Fitur pustaka C Standard
| Feature |
Supported |
|
Fitur pustaka C99 Standard |
Supported |
Makro ejaan alternatif <iso646.h> |
VS 2015 |
Dukungan karakter luas <wchar.h> dan <wctype.h> |
VS 2015 |
Dukungan kompleks di <complex.h> |
Sebagian di VS 2015 K |
Ketik fungsi matematika generik <tgmath.h> |
VS 2019 16.8 2104 |
Karakteristik titik mengambang tambahan <float.h> |
VS 2015 |
Penentu printf float heksadesimal %A, %a |
VS 2015 |
Jenis bilangan bulat diperluas <inttypes.h>, <stdint.h> |
VS 2015 |
vscanf keluarga di <stdio.h> dan <wchar.h> |
VS 2015 |
Fungsi matematika baru dalam <math.h> |
VS 2015 |
Perawatan kondisi kesalahan perpustakaan matematika (math_errhandling) |
VS 2015 |
Akses lingkungan titik mengambang <fenv.h> |
VS 2015 |
%lf penentu konversi untuk printf |
VS 2015 |
snprintf keluarga fungsi dalam <stdio.h> |
VS 2015 |
booleanketik<stdbool.h> |
VS 2015 |
va_copy makro |
VS 2015 |
Penentu konversi strftime tambahan |
Parsial di VS 2015 L |
|
Fitur pustaka C11 Standard |
Supported |
Penentu perataan <stdalign.h> |
VS 2019 16.8 C11, 2104 |
aligned_alloc |
Tidak ada M |
Tidak ada penentu pengembalian <stdnoreturn.h> |
VS 2019 16.8 C11, 2104 |
Dukungan threading <threads.h> |
yes |
Dukungan <stdatomic.h> atom |
experimental |
char16_t, char32_t<uchar.h> |
VS 2019 16.8 C11 |
gets() dihapus |
VS 2019 16.8 C11, N |
gets_s() |
VS 2019 16.8 C11 |
Antarmuka pemeriksaan batas (API *_s) |
Sebagian di VS 2015 C11, O |
fopen
"x" pilihan |
VS 2019 16.8 C11 |
| Pernyataan statis |
VS 2019 16.8 C11, 2104 |
quick_exit |
VS 2019 16.8 C11 |
<complex.h> makro |
VS 2019 16.8 C11 |
karakteristik titik mengambang <float.h> |
VS 2019 16.8 C11 |
Utas C11 <threads.h> |
VS 2022 17.8 C11 |
Nilai yang Didukung
Tidak Belum diimplementasikan.
Parsial Implementasinya tidak lengkap. Untuk informasi selengkapnya, lihat bagian Catatan.
VS 2010 Didukung pada Visual Studio 2010.
VS 2013 Didukung pada Visual Studio 2013.
VS 2015 Didukung pada Visual Studio 2015 (RTW).
VS 2015.2 dan VS 2015.3 menunjukkan fitur yang didukung di pembaruan 2 Visual Studio 2015 dan Visual Studio 2015 Pembaruan 3, masing-masing.
VS 2017 15.0 Didukung di Visual Studio 2017 versi 15.0 (RTW).
VS 2017 15.3 Didukung di Visual Studio 2017 versi 15.3.
VS 2017 15.5 Didukung di Visual Studio 2017 versi 15.5.
VS 2017 15.7 Didukung di Visual Studio 2017 versi 15.7.
VS 2019 16.0 Didukung di Visual Studio 2019 versi 16.0 (RTW).
VS 2019 16.1 Didukung di Visual Studio 2019 versi 16.1.
VS 2019 16.2 Didukung di Visual Studio 2019 versi 16.2.
VS 2019 16.3 Didukung di Visual Studio 2019 versi 16.3.
VS 2019 16.4 Didukung di Visual Studio 2019 versi 16.4.
VS 2019 16.5 Didukung di Visual Studio 2019 versi 16.5.
VS 2019 16.6 Didukung di Visual Studio 2019 versi 16.6.
VS 2019 16.7 Didukung di Visual Studio 2019 versi 16.7.
VS 2019 16.8 Didukung di Visual Studio 2019 versi 16.8.
VS 2019 16.9 Didukung di Visual Studio 2019 versi 16.9.
VS 2019 16.10 Didukung di Visual Studio 2019 versi 16.10.
VS 2022 17.0 Didukung di Visual Studio 2022 versi 17.0.
VS 2022 17.1 Didukung di Visual Studio 2022 versi 17.1.
VS 2022 17.2 Didukung di Visual Studio 2022 versi 17.2.
VS 2022 17.3 Didukung di Visual Studio 2022 versi 17.3.
VS 2022 17.4 Didukung di Visual Studio 2022 versi 17.4.
VS 2022 17.5 Didukung di Visual Studio 2022 versi 17.5.
MSVC Build Tools versi 14.50 Didukung di Visual Studio 2026 18.0 (pengkompilasi MSVC versi 19.50) dan yang lebih baru.
Notes
Dalam/std:c++14 modus, pengompilasi meninggalkan spesifikasi pengecualian dinamis yang tidak diimplementasikan, dan memperlakukan throw() sebagai sinonim dengan __declspec(nothrow). Dalam C++17, P0003R5 menghapus sebagian besar spesifikasi pengecualian dinamis, kecuali untuk satu vestige: standar menetapkan throw() sebagai deprecated dan mengharuskannya berfungsi sebagai sinonim untuk noexcept. Dalam mode /std:c++17, MSVC sekarang sesuai dengan Standard dengan memberikan throw() perilaku yang sama seperti noexcept, yaitu penegakan melalui penghentian.
Opsi pengompilasi /Zc:noexceptTypes meminta perilaku lama __declspec(nothrow). Kemungkinan throw() akan dihapus dalam versi C++yang akan datang. Untuk membantu memigrasikan kode sebagai respons terhadap perubahan ini dalam implementasi Standar dan Microsoft, peringatan pengkompilasi baru untuk masalah spesifikasi pengecualian ditambahkan di bawah /std:c++17 dan /permissive-.
B Didukung dalam /permissive- mode di Visual Studio 2017 versi 15.7. Untuk informasi selengkapnya, lihat Two-phase name lookup support comes to MSVC .
C Di Visual Studio 2019 versi 16.6 dan versi yang lebih baru, kompilator sepenuhnya mengimplementasikan preprosedur C99 standar melalui /Zc:preprocessor opsi . (Dalam Visual Studio 2017 versi 15.8 hingga 16.5, kompiler mendukung praprosesor C99 standar melalui opsi pengompilasi /experimental:preprocessor.) Opsi ini aktif secara default saat opsi pengompilasi /std:c11 atau /std:c17 ditentukan.
D Didukung di bawah /std:c++14 dengan peringatan yang dapat ditekan, C4984.
E Implementasinya cukup untuk mendukung Pustaka Standar C++20. Implementasi lengkap memerlukan perubahan pemecahan biner.
F Fitur dihapus ketika /std:c++17 opsi pengkompilasi atau yang lebih baru ditentukan. Untuk mengaktifkan kembali fitur-fitur ini (untuk memudahkan transisi ke mode bahasa yang lebih baru), gunakan makro ini: _HAS_AUTO_PTR_ETC, _HAS_FUNCTION_ALLOCATOR_SUPPORT, _HAS_OLD_IOSTREAMS_MEMBERS, dan _HAS_UNEXPECTED.
G Pustaka algoritma paralel C++17 selesai. Lengkap tidak berarti bahwa setiap algoritma disejajarkan dalam setiap kasus. Algoritma yang paling penting diparalelkan. Tanda tangan kebijakan eksekusi disediakan bahkan di mana implementasi tidak menyejajarkan algoritma. Header internal pusat, <yvals_core.h>, berisi "Catatan Algoritma Paralel" berikut: C++ memungkinkan implementasi untuk menerapkan algoritma paralel sebagai panggilan ke algoritma serial. Implementasi ini memparalelkan beberapa panggilan algoritma umum, tetapi tidak semua.
Algoritma berikut diparalelkan:
-
adjacent_difference, , adjacent_find, all_of, any_ofcount, count_ifequal, exclusive_scan, find, , find_end, find_first_offind_iffind_if_notfor_each, , for_each_n, inclusive_scanis_heapis_heap_untilis_partitioned, , is_sortedis_sorted_untilmismatchnone_ofpartitionreduceremoveremove_ifreplacereplace_ifsearchsearch_nset_differenceset_intersectionsortstable_sorttransformtransform_exclusive_scantransform_inclusive_scantransform_reduce
Algoritma ini saat ini tidak diparalelkan:
- Algoritma ini tidak menunjukkan peningkatan performa paralelisme yang nyata pada perangkat keras target. Semua algoritma yang hanya menyalin atau memutus elemen tanpa cabang biasanya bandwidth memori terbatas:
-
copy, , copy_nfill, fill_n, move, reverse, reverse_copy, rotate, rotate_copy, , shift_left, , shift_rightswap_ranges
- Kebingungan atas persyaratan paralelisme pengguna ada untuk algoritma ini, yang kemungkinan berada dalam kategori di atas pula:
- Paralelisme yang efektif dari algoritma ini mungkin tidak layak:
-
partial_sort, partial_sort_copy
- Algoritma ini belum dievaluasi. Pustaka mungkin menerapkan paralelisme dalam rilis mendatang:
-
copy_if, , includes, inplace_mergelexicographical_compare, max_element, mergemin_element, minmax_element, , nth_element, partition_copy, remove_copy, remove_copy_if, replace_copy, replace_copy_if, , set_symmetric_difference, set_unionstable_partition, , unique,unique_copy
H Ini adalah implementasi baru sepenuhnya, tidak kompatibel dengan versi sebelumnyastd::experimental, dibuat diperlukan oleh dukungan symlink, perbaikan bug, dan perubahan perilaku yang diperlukan standar. Saat ini, <filesystem> menyediakan std::filesystem baru dan std::experimental::filesystem sebelumnya. Header <experimental/filesystem> hanya menyediakan implementasi eksperimental lama. Harapkan penghapusan implementasi eksperimental dalam rilis perpustakaan pemecah ABI berikutnya.
Saya Didukung oleh kompilator intrinsik.
Jstd::byte diaktifkan oleh /std:c++17 atau lebih baru, tetapi karena dapat berkonflik dengan header Windows SDK dalam beberapa kasus, ia memiliki makro opt-out yang halus. Untuk menonaktifkannya, tentukan _HAS_STD_BYTE sebagai 0.
K MSVC tidak mendukung _Complex kata kunci atau jenis kompleks asli. Universal CRT <complex.h> menggunakan makro khusus implementasi untuk mencapai efek yang sama. Untuk informasi selengkapnya, lihat dukungan matematika kompleks C.
L Universal CRT tidak mengimplementasikan strftimeE pengubah konversi alternatif dan O . Pengubah ini diabaikan (misalnya, %Oe bersifat sama seperti %e). API lokal yang mendasar tidak mendukung pengubah.
M Universal CRT tidak menerapkan C11 aligned_alloc, tetapi menyediakan _aligned_malloc dan _aligned_free. Karena sistem operasi Windows tidak mendukung alokasi yang selaras, fungsi ini tidak mungkin diimplementasikan.
N Deklarasi dihapus, tetapi ekspor untuk fungsi tetap untuk kompatibilitas mundur.
O Fungsi pemeriksaan batas tertentu tidak diimpikan, atau memiliki tanda tangan yang berbeda, atau bukan bagian dari standar C11 atau C17. Fungsi ini tidak diimplementasikan: abort_handler_s, ignore_handler_s, memset_s, set_constraint_handler_s, snprintf_s, snwprintf_s, strerrorlen_s, vsnwprintf_s. Fungsi ini memiliki tanda tangan berbeda: gmtime_s, localtime_s, qsort_s, strtok_s, vsnprintf_s, wcstok_s. Fungsi ini tidak muncul di standar: clearerr_s, fread_s.
P Dukungan ditambahkan di Visual Studio 2019 versi 16.10. Dukungan untuk Clang ditambahkan dalam Visual Studio 2022 versi 17.0.
T Ini menghapus declare_reachable, , undeclare_reachabledeclare_no_pointers, undeclare_no_pointers, get_pointer_safety. Sebelumnya, fungsi-fungsi ini tidak berpengaruh.
R Ini adalah perubahan pemecahan sumber umum. Namun, kode yang sebelumnya memiliki perilaku yang tidak terdefinisi pada runtime sekarang ditolak dengan kesalahan pengompilasi.
S Adaptor rentang input dan counted_iterator diimplementasikan dalam VS 2022 17.0. Pembaruan mendatang untuk Visual Studio 2019 versi 16.11 direncanakan untuk menggabungkan perubahan ini.
T<stdatomic.h> saat ini didukung ketika dikompilasi sebagai C++ (/std:c++latest). Ini belum didukung ketika dikompilasi sebagai C (/std:c11 dan /std:c17)
U Extended floating-point type adalah fitur C++23 opsional. Fitur ini tidak akan diimplementasikan hingga standardisasi C++23 diselesaikan.
V Gunakan opsi /source-charset:utf-8 pengkompilasi dan /we4828 untuk memperlakukan file sumber sebagai UTF-8 yang dikodekan.
14 Fitur C++17 dan C++20 ini selalu diaktifkan, bahkan ketika /std:c++14 (default) ditentukan. Alasannya adalah karena fitur diimplementasikan sebelum pengenalan opsi /std, atau karena implementasi bersyarat sangat rumit.
17 Fitur-fitur ini diaktifkan oleh /std:c++17 opsi pengkompilasi atau yang lebih baru.
20 Dalam versi melalui Visual Studio 2019 versi 16.10, fitur-fitur ini diaktifkan oleh /std:c++latest opsi kompilator. Visual Studio 2019 versi 16.11 menambahkan opsi pengompilasi /std:c++20 untuk mengaktifkan fitur-fitur ini.
20abi Karena pekerjaan pasca-rilis yang sedang berlangsung pada standar C++20, <format>, bagian pemformatan (yang mengandalkan <chrono><format> ), dan rentang pabrik dan rentang adaptor dari <ranges> (semua yang membutuhkan view konsep) hanya tersedia di bawah /std:c++latest. Harapkan fitur ini di bawah /std:c++20 setelah kesepakatan dicapai dengan WG21 bahwa tidak diperlukan perubahan lebih lanjut yang melanggar ABI. Bagian <chrono> yang tersisa dan algoritme yang berlaku untuk rentang diaktifkan di bawah opsi pengompilasi /std:c++20 di Visual Studio 2019 versi 16.11 dan versi yang lebih baru.
23 Di Visual Studio 2022 versi 17.0 ke atas, fitur-fitur ini diaktifkan oleh /std:c++latest opsi pengkompilasi.
24 Di MSVC Build Tools versi 14.50 ke atas (pertama kali dikirim dengan Visual Studio 2026 versi 18.0), fitur ini diaktifkan oleh /std:c++latest opsi pengkompilasi.
C11 Dukungan pengkompilasi untuk C11 dan C17 memerlukan Visual Studio 2019 versi 16.8 atau yang lebih tinggi. Kecuali seperti yang disebutkan, dukungan pustaka C11 dan C17 memerlukan Windows SDK build 10.0.20211.0 atau lebih tinggi. Untuk informasi selengkapnya tentang cara memasang dukungan untuk C11 dan C17, lihat Menginstal dukungan C11 dan C17 di Visual Studio.
DR Fitur-fitur ini diaktifkan di semua mode opsi pengkompilasi C++/std. Komite Standar C++ mengadopsi perubahan ini sebagai Laporan Cacat retroaktif ke C++ 11 dan semua versi yang lebih baru.
2104 Dukungan pustaka C11 untuk fitur ini memerlukan windows SDK build 10.0.20348.0 (versi 2104) atau yang lebih tinggi.
Lihat juga
Referensi Bahasa C++
Pustaka Standar C++
Peningkatan kesesuaian C++ di Visual Studio
Apa yang Baru untuk Microsoft C++ di Visual Studio
Riwayat perubahan Visual C++ 2003 hingga 2015
Visual C++ mengubah sejarah 2003 hingga 2015
blog tim C++