A Visual Studióban (MSVC) található Microsoft C/C++ fordító szabványoknak való megfelelősége folyamatban lévő munka. Az alábbiakban összefoglaljuk az ISO Standard C és C++ nyelv és kódtárak Visual Studio-verzió szerinti megfelelőségét. Minden C++ fordítónak és standard könyvtár jellemzőnek van hivatkozása az ISO Standard C++ javaslati dokumentumra, amely leírja a jellemzőt, ha az elérhető a közzétételkor. A Támogatott oszlop felsorolja azt a Visual Studio-verziót, amelyben először megjelent a funkció támogatása.
A megfelelőségi fejlesztésekről további információt a Visual Studio C++ megfelelőségi fejlesztései című témakörben talál. Az egyéb módosítások listáját a Microsoft C++ újdonságai a Visual Studióban című témakörben találja. A korábbi verziók megfelelőségi változásait a Visual C++ változáselőzményei és a Visual C++ Újdonságok 2003 és 2015 között című témakörben talál. A C++ csapat aktuális híreiért látogasson el a C++ csapat blogjára.
C++ fordítófunkciók
| Feature |
Supported |
|
C++03/11 Alapvető nyelvi funkciók |
Supported |
| Minden más |
VS 2015 A |
| Kétfázisú névkeresés |
VS 2017 15,7 B |
N2634 Expression SFINAE |
VS 2017 15.7 |
N1653 C99 preprocessor |
VS 2019 16,6 C |
|
C++03/11 Alapvető nyelvi funkciók (Hibajelentések) |
Supported |
|
C++14 Alapvető nyelvi funkciók |
Supported |
N3323 Tweaked wording for contextual conversions |
VS 2013 (Visual Studio 2013) |
N3472 Binary literals |
Visual Studio 2015 |
N3638 auto and decltype(auto) return types |
Visual Studio 2015 |
N3648 init-captures |
Visual Studio 2015 |
N3649 Generic lambdas |
Visual Studio 2015 |
N3760 [[deprecated]] attribute |
Visual Studio 2015 |
N3778 Sized deallocation |
Visual Studio 2015 |
N3781 Digit separators |
Visual Studio 2015 |
N3651 Variable templates |
VS 2015 2. frissítés |
N3652 Extended constexpr |
VS 2017 15.0 |
N3653 Default member initializers for aggregates |
VS 2017 15.0 |
|
C++17 Alapvető nyelvi funkciók |
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 |
|
C++17 Alapvető nyelvi funkciók (Hibajelentések) |
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 |
Részleges a VS 2019 16.7 E, Teljes a 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 |
|
C++20 Core nyelvi funkciók |
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. A jobb visszamenőleges kompatibilitás érdekében __VA_OPT__ minden nyelvi verzióban /Zc:preprocessor alatt van engedélyezve. |
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 |
|
C++23 Alapvető nyelvi funkciók |
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 verzió 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 |
Nincs U |
P1774R8 Portable assumptions |
no |
P1787R6 Declarations and where to find them |
Nincs szükség módosításra |
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 verzió 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 verzió 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 verzió 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 verzió 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 verzió 14.50 24 |
P2280R4 Using unknown pointers and references in constant expressions |
MSVC Build Tools verzió 14.50 24 |
P2290R3 Delimited escape sequences |
MSVC Build Tools verzió 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 verzió 14.50 24 |
P2362R3 Remove non-encodable wide character literals and multicharacter wide character literals |
no |
P2437R1 Support for #warning |
MSVC Build Tools verzió 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 verzió 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 verzió 14.50 24 |
P2582R1 Wording for class template argument deduction from inherited constructors |
no |
C++ Standard kódtár funkciói
A standard kódtár funkcióinak és hibajavításainak termékverzió szerinti részletesebb listája a GitHub Microsoft STL wiki Changelog oldalán érhető el.
A folyamatos megfelelőségi munkával kapcsolatos legfrissebb információkért lásd:
| Feature |
Supported |
|
C++14 Standard kódtárfunkciók |
Supported |
N3462 SFINAE-Friendly result_of |
Visual Studio 2015.2 |
N3302 constexpr For <complex> |
Visual Studio 2015 |
N3469 constexpr For <chrono> |
Visual Studio 2015 |
N3470 constexpr For <array> |
Visual Studio 2015 |
N3471 constexpr For <initializer_list>, <tuple>, <utility> |
Visual Studio 2015 |
N3545 integral_constant::operator()() |
Visual Studio 2015 |
N3642 UDLs For <chrono>, <string> (1729ms, "meow"s, etc.) |
Visual Studio 2015 |
N3644 Null Forward Iterators |
Visual Studio 2015 |
N3654 quoted() |
Visual Studio 2015 |
N3657 Heterogeneous Associative Lookup |
Visual Studio 2015 |
N3658 integer_sequence |
Visual Studio 2015 |
N3659 shared_mutex (Timed) |
Visual Studio 2015 |
N3668 exchange() |
Visual Studio 2015 |
N3669 Fixing constexpr Member Functions Without const |
Visual Studio 2015 |
N3670 get<T>() |
Visual Studio 2015 |
N3671 Dual-Range equal(), is_permutation(), mismatch() |
Visual Studio 2015 |
N3778 Sized Deallocation |
Visual Studio 2015 |
N3779 UDLs For <complex> (3.14i, etc.) |
Visual Studio 2015 |
N3789 constexpr For <functional> |
Visual Studio 2015 |
N3887 tuple_element_t |
Visual Studio 2015 |
N3891 Renaming shared_mutex (Timed) To shared_timed_mutex |
Visual Studio 2015 |
N3346 Minimal Container Element Requirements |
VS 2013 (Visual Studio 2013) |
N3421 Transparent Operator Functors (less<>, etc.) |
VS 2013 (Visual Studio 2013) |
N3655 Alias Templates For <type_traits> (decay_t, etc.) |
VS 2013 (Visual Studio 2013) |
N3656 make_unique() |
VS 2013 (Visual Studio 2013) |
|
C++17 Standard kódtárfunkciók |
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 |
|
C++17 Standard kódtárfunkciók (Hibajelentések) |
Supported |
P0682R1 Repairing Elementary String Conversions |
VS 2017 15.7 17 |
P1164R1 Making create_directory() Intuitive |
VS 2019 16.0 14 |
|
C++20 Standard kódtárfunkciók |
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 |
|
C++20 Standard kódtárfunkciók (Hibajelentések) |
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 |
|
C++23 Standard kódtárfunkciók |
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 verzió 14.5 24 |
P2290R3 Delimited escape sequences |
MSVC Build Tools verzió 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 |
részleges a Visual Studio 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 verzió 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 verzió 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 |
A felsorolt dokumentumok egy csoportja egy Standard funkciót, valamint egy vagy több jóváhagyott fejlesztést vagy bővítést jelez. Ezek a funkciók együtt vannak implementálva.
C Standard kódtár funkciói
| Feature |
Supported |
|
C99 Standard könyvtárfunkciók |
Supported |
Alternatív helyesírási makrók <iso646.h> |
Visual Studio 2015 |
Széles karaktertámogatás <wchar.h> és <wctype.h> |
Visual Studio 2015 |
Összetett támogatás <complex.h>-ban |
Részleges VS 2015 K |
Általános matematikai függvények beírása <tgmath.h> |
VS 2019 16.8 2104 |
További lebegőpontos jellemzők <float.h> |
Visual Studio 2015 |
Hexadecimális lebegőpontos formátumjelölők %A, %a |
Visual Studio 2015 |
Kiterjesztett egész számok típusai <inttypes.h>, <stdint.h> |
Visual Studio 2015 |
vscanf család <stdio.h> és <wchar.h> |
Visual Studio 2015 |
Új matematikai függvények a következőben: <math.h> |
Visual Studio 2015 |
Matematikai kódtár hibaállapotainak kezelése (math_errhandling) |
Visual Studio 2015 |
Lebegőpontos környezet hozzáférése <fenv.h> |
Visual Studio 2015 |
%lf konvertálási jellemző printf |
Visual Studio 2015 |
snprintf függvénycsalád <stdio.h> |
Visual Studio 2015 |
boolean gépelje be <stdbool.h> |
Visual Studio 2015 |
va_copy makró |
Visual Studio 2015 |
További strftime konverziós meghatározók |
VS 2015 részleges L-ben |
|
C11 Standard kódtárfunkciók |
Supported |
Igazítási meghatározók <stdalign.h> |
VS 2019 16.8 C11, 2104 |
aligned_alloc |
Nincs M |
Nincs visszatérési specifikáló <stdnoreturn.h> |
VS 2019 16.8 C11, 2104 |
Szálkezelés támogatása <threads.h> |
yes |
Atomi támogatás <stdatomic.h> |
experimental |
char16_t, char32_t<uchar.h> |
VS 2019 16,8 C11 |
gets() Eltávolított |
VS 2019 16.8 C11, N |
gets_s() |
VS 2019 16,8 C11 |
Határellenőrző felületek (*_s API-k) |
Részleges a VS 2015-ben C11, O |
fopen
"x" opció |
VS 2019 16,8 C11 |
| Statikus állítások |
VS 2019 16.8 C11, 2104 |
quick_exit |
VS 2019 16,8 C11 |
<complex.h> Makrók |
VS 2019 16,8 C11 |
lebegőpontos jellemzők <float.h> |
VS 2019 16,8 C11 |
C11 szálak <threads.h> |
VS 2022 17,8 C11 |
Támogatott értékek
Nem Még nincs implementálva.
Részleges A megvalósítás nem fejeződött be. További információkért lásd a Megjegyzések szakaszt.
VS 2010 A Visual Studio 2010 támogatja.
VS 2013 A Visual Studio 2013-ban támogatott.
VS 2015 A Visual Studio 2015 (RTW) támogatja.
A VS 2015.2 és a VS 2015.3 a Visual Studio 2015 Update 2 és a Visual Studio 2015 Update 3 által támogatott funkciókat jelöli.
VS 2017 15.0 A Visual Studio 2017 15.0-s (RTW) verziója támogatott.
VS 2017 15.3 A Visual Studio 2017 15.3-s verziója támogatott.
VS 2017 15.5 A Visual Studio 2017 15.5-ös verziója támogatott.
VS 2017 15.7 A Visual Studio 2017 15.7-es verziója támogatott.
VS 2019 16.0 A Visual Studio 2019 16.0-s (RTW) verziója támogatott.
VS 2019 16.1 A Visual Studio 2019 16.1-es verziója támogatott.
VS 2019 16.2 A Visual Studio 2019 16.2-es verziójában támogatott.
VS 2019 16.3 A Visual Studio 2019 16.3-s verziója támogatott.
VS 2019 16.4 A Visual Studio 2019 16.4-es verziójában támogatott.
VS 2019 16.5 A Visual Studio 2019 16.5-ös verziójában támogatott.
VS 2019 16.6 A Visual Studio 2019 16.6-os verziója támogatott.
VS 2019 16.7 A Visual Studio 2019 16.7-es verziójában támogatott.
VS 2019 16.8 A Visual Studio 2019 16.8-es verziója támogatott.
VS 2019 16.9 A Visual Studio 2019 16.9-es verziójában támogatott.
VS 2019 16.10 A Visual Studio 2019 16.10-es verziójában támogatott.
VS 2022 17.0 A Visual Studio 2022 17.0-s verziója támogatott.
VS 2022 17.1 A Visual Studio 2022 17.1-es verziója támogatott.
VS 2022 17.2 A Visual Studio 2022 17.2-es verziójában támogatott.
VS 2022 17.3 A Visual Studio 2022 17.3-s verziója támogatott.
VS 2022 17.4 A Visual Studio 2022 17.4-es verziójában támogatott.
VS 2022 17,5 A Visual Studio 2022 17.5-ös verziója támogatott.
MSVC Build Tools 14.50-es verzió A Visual Studio 2026 18.0 (MSVC fordító 19.50-es verziója) és újabb verziói támogatottak.
Notes
Az/std:c++14 módban a fordító nem hajtja végre a dinamikus kivétel specifikációkat, és szinonimaként kezeli throw()-t __declspec(nothrow)-vel. A C++17-ben a P0003R5 eltávolította a legtöbb dinamikus kivétel-specifikációt, kivéve egy maradványt: a standard elavult throw()-t, és megköveteli, hogy szinonimaként viselkedjen a noexcept-hez.
/std:c++17 módban az MSVC most már a Standardnak megfelelően működik, ugyanazzal a viselkedéssel throw(), mint noexcept, azaz a leállításon keresztüli kényszerítéssel.
A fordító opciója /Zc:noexceptTypes a __declspec(nothrow) régi viselkedését kéri. Valószínű, hogy a throw() C++ egy későbbi verziójában el lesz távolítva. A Standard és a Microsoft implementáció változásaira válaszul a kód migrálásához új fordítói figyelmeztetések jelennek meg /std:c++17/permissive-a kivétel specifikációjával kapcsolatos problémákra vonatkozóan.
B A Visual Studio 2017 15.7-es verziójában támogatott /permissive- módban. További információért lásd Two-phase name lookup support comes to MSVC.
A Visual Studio 2019 16.6-os és újabb verzióiban a fordító teljes mértékben megvalósítja a standard C99-es előfeldolgozót az /Zc:preprocessor opcióval. (A Visual Studio 2017 15.8–16.5-ös verzióiban a fordító a /experimental:preprocessor fordító beállítással keresztül támogatja a standard C99-előfeldolgozót.) Ez a beállítás alapértelmezés szerint be van kapcsolva, amikor a /std:c11 vagy /std:c17 fordító beállítás meg van adva.
D A /std:c++14 támogatott egy letiltható figyelmeztetéssel, C4984.
E A megvalósítás elegendő a C++20 Standard kódtár támogatásához. A teljes implementáció bináris kompatibilitástörő változást igényel.
A funkciók el lettek távolítva, amikor a /std:c++17 vagy újabb fordítóbeállítás meg van adva. Ezeknek a funkcióknak az újbóli engedélyezéséhez (az újabb nyelvi módokra való áttérés megkönnyítéséhez) használja a következő makrókat: _HAS_AUTO_PTR_ETC, _HAS_FUNCTION_ALLOCATOR_SUPPORT, _HAS_OLD_IOSTREAMS_MEMBERSés _HAS_UNEXPECTED.
A G C++17 párhuzamos algoritmustára befejeződött. A befejezés nem jelenti azt, hogy minden algoritmus minden esetben párhuzamos lesz. A legfontosabb algoritmusok párhuzamosak. A végrehajtási szabályzat aláírásai akkor is elérhetők, ha az implementáció nem párhuzamosítja az algoritmusokat. A központi belső fejléc <yvals_core.h> a következő "Párhuzamos algoritmusok megjegyzései"-t tartalmazza: A C++ lehetővé teszi, hogy egy implementációként a párhuzamos algoritmusokat soros algoritmusok hívásaként valósítsák meg. Ez az implementáció számos gyakori algoritmushívást párhuzamosít, de nem mindegyiket.
A következő algoritmusok párhuzamosak:
-
adjacent_difference, adjacent_find, all_of, any_of, count, count_if, equal, exclusive_scanfind, find_end, find_first_of, find_iffind_if_notfor_eachfor_each_ninclusive_scanis_heapis_heap_untilis_partitionedis_sortedis_sorted_untilmismatchnone_ofpartitionreduceremoveremove_ifreplacereplace_ifsearchsearch_nset_differenceset_intersectionsortstable_sorttransformtransform_exclusive_scantransform_inclusive_scantransform_reduce
Ezek az algoritmusok jelenleg nem párhuzamosak:
- Ezek az algoritmusok nem mutatnak észrevehető párhuzamossági teljesítményt a célhardvereken. Minden olyan algoritmus, amely csak ágak nélküli elemeket másol vagy permutált, általában korlátozott a memória sávszélessége:
-
copy, copy_n, fill, fill_n, movereverse, reverse_copy, rotate, rotate_copy, shift_left, shift_right, swap_ranges
- Ezen algoritmusok felhasználói párhuzamosságra vonatkozó követelményei között keveredés áll fenn, amelyek valószínűleg a fenti kategóriába tartoznak:
- Előfordulhat, hogy az algoritmusok hatékony párhuzamossága nem valósítható meg:
-
partial_sort, partial_sort_copy
- Ezek az algoritmusok még nincsenek kiértékelve. A kódtár a párhuzamosságot egy későbbi kiadásban implementálhatja:
-
copy_if, includes, inplace_merge, lexicographical_compare, max_element, merge, min_element, minmax_element, nth_element, partition_copy, remove_copy, remove_copy_if, replace_copy, replace_copy_if, set_symmetric_difference, set_union, stable_partition, unique, unique_copy
H Ez egy teljesen új implementáció, amely nem kompatibilis az előző std::experimental verzióval, amelyet a symlink támogatása, a hibajavítások és a szabványos működés változásai tettek szükségessé.
<filesystem> Jelenleg az újat std::filesystem és az előzőt std::experimental::filesystemis biztosítja. A <experimental/filesystem> fejléc csak a régi kísérleti megvalósítást biztosítja. A kódtárak következő ABI-kompatibilitástörő kiadásában várhatóan megszűnik a kísérleti implementáció.
Belső fordító által támogatott vagyok.
Jstd::byte a /std:c++17 vagy újabb verziók engedélyezik, de mivel ütközhet a Windows SDK-fejlécekkel egyes esetekben, finomhangolt kizárási makróval rendelkezik. A letiltásához definiálja _HAS_STD_BYTE úgy, hogy 0 legyen.
A K MSVC nem támogatja a _Complex kulcsszó- vagy natív összetett típusokat. Az univerzális CRT <complex.h> implementációspecifikus makrókkal éri el ugyanazt a hatást. További információ: C komplex matematikai támogatás.
L Az univerzális CRT nem implementálja az strftimeE alternatív O konverziómódosítókat. Ezek a módosítók figyelmen kívül lesznek hagyva (például ugyanúgy viselkednek, %Oe mint %e). A mögöttes területi API-k nem támogatják a módosítókat.
M Az univerzális CRT nem implementálja a C11-et aligned_alloc, de biztosít _aligned_malloc és _aligned_free. Mivel a Windows operációs rendszer nem támogatja az összehangolt foglalásokat, ez a függvény valószínűleg nem lesz implementálva.
N A deklaráció el lesz távolítva, de a függvény exportálása a visszamenőleges kompatibilitás érdekében marad.
O Egyes határellenőrzési függvények nem használhatók, vagy eltérő aláírásokkal rendelkeznek, vagy nem részei a C11 vagy C17 szabványnak. Ezek a függvények nem használhatók: abort_handler_s, , ignore_handler_s, memset_sset_constraint_handler_s, snprintf_s, snwprintf_s, , strerrorlen_svsnwprintf_s. Ezek a függvények különböző aláírásokkal rendelkeznek: gmtime_s, localtime_s, qsort_s, strtok_s, vsnprintf_s. wcstok_s Ezek a függvények nem jelennek meg a standardban: clearerr_s, fread_s.
A P-támogatás a Visual Studio 2019 16.10-es verziójában lett hozzáadva. A Clang támogatása a Visual Studio 2022 17.0-s verziójában lett hozzáadva.
Q Ez eltávolítja declare_reachablea , undeclare_reachable, declare_no_pointers, undeclare_no_pointers, get_pointer_safety. Korábban ezek a függvények nem voltak hatással.
R Ez egy gyakori forrástörő változás. A futtatókörnyezetben korábban nem definiált kódot azonban a rendszer fordítóhibákkal utasítja el.
S Bemeneti tartomány adapterei, és counted_iterator a VS 2022 17.0-ban vannak implementálva. A Visual Studio 2019 16.11-es verziójának jövőbeli frissítése a tervek szerint tartalmazza ezeket a módosításokat.
A T<stdatomic.h> jelenleg támogatott, ha C++ ()-ként van/std:c++latest lefordítva. Még nincs támogatva C ként fordítva (/std:c11 és /std:c17)
Az U kiterjesztett lebegőpontos típusok opcionális C++23 funkció. Ez a funkció csak a C++23 szabvány véglegesítéséig lesz implementálva.
V Használja a fordító beállításait /source-charset:utf-8 , és /we4828 kezelje a forrásfájlokat UTF-8 kódolásúként.
14 Ezek a C++17 és C++20 funkciók mindig engedélyezve vannak, még akkor is, ha /std:c++14 (az alapértelmezett) meg van adva. Ennek az az oka, hogy a funkció a lehetőségek bevezetése előtt lett implementálva, vagy mert a /std feltételes implementáció nem kívánatosan összetett volt.
17 Ezeket a funkciókat a /std:c++17 vagy újabb fordítóbeállítás engedélyezi.
20 A Visual Studio 2019 16.10-es verzióján keresztüli verziókban ezeket a funkciókat a /std:c++latest fordító beállítás engedélyezi. A Visual Studio 2019 16.11-es verziója hozzáadta a /std:c++20 fordító opciót a funkciók engedélyezéséhez.
20abi Mivel a C++20 szabványon folyamatban van a kiadás utáni munka, <format> a formázási részek <chrono> (amelyek a <format> támaszkodnak), valamint a tartománygyárak és tartományadaptátorok <ranges> (minden, ami a view koncepciót igényli) csak a /std:c++latest alatt érhetők el. Ezek a funkciók /std:c++20 a WG21-vel való megállapodás után várhatók, hogy nincs szükség további ABI-kompatibilitástörő módosításokra. A Visual Studio 2019 16.11-es és újabb verzióiban a <chrono> és a tartományokra vonatkozó algoritmusok további részei a /std:c++20 fordítóbeállítás alatt vannak engedélyezve.
23 A Visual Studio 2022 17.0-s és újabb verzióiban ezeket a funkciókat a /std:c++latest fordító beállítás engedélyezi.
24 Az MSVC Build Tools 14.50-es és újabb verzióiban (először a Visual Studio 2026 18.0-s verziójával szállítjuk) ezeket a funkciókat a /std:c++latest fordító lehetőség engedélyezi.
C11 A C11 és C17 fordítói támogatásához a Visual Studio 2019 16.8-os vagy újabb verziója szükséges. Ha másként nem jelezzük, a C11 és C17 könyvtárak támogatásához a Windows SDK 10.0.20211.0-s vagy újabb buildje szükséges. A C11 és C17 támogatás telepítéséről további információt a C11 és C17 telepítése a Visual Studióban című témakörben talál.
DR Ezek a funkciók minden C++ /std fordítóbeállítási módban engedélyezve vannak. A C++ Standard bizottság ezt a módosítást visszamenőleges hibajelentésként fogadta el a C++11 és az összes későbbi verzióra vonatkozóan.
A funkció 2104 C11-es kódtárának használatához a Windows SDK 10.0.20348.0-s (2104-es verzió) vagy újabb buildje szükséges.
Lásd még
C++ nyelvi referencia
C++ standard kódtár
C++ megfelelőségi fejlesztések a Visual Studio
A Microsoft C++ újdonságai a Visual Studióban
Visual C++ változáselőzmények 2003 és 2015 között
Visual C++ Újdonságok 2003–2015
C++ csapat blogja