Microsoft C++ 言語の準拠表Microsoft C++ language conformance table

Visual Studio での Microsoft C++ コンパイラ (MSVC) の標準への準拠は、進行中の作業です。Standards conformance for the Microsoft C++ compiler in Visual Studio (MSVC) is a work in progress. ここでは、Visual Studio のバージョン別に、Microsoft の ISO 標準の C++ 言語およびライブラリの準拠についてまとめます。Here's a summary of our ISO Standard C++ language and library conformance by Visual Studio version. コンパイラと標準ライブラリの各機能の名前は、その機能を説明する ISO 標準の C++ 提案書にリンクしています (発行時に利用可能な場合)。Each compiler and standard library feature name links to the ISO Standard C++ proposal paper that describes the feature, if one is available at publication time. サポート状況 列には、その機能が最初にサポートされた Visual Studio のバージョンが記載されています。The Supported column lists the Visual Studio version in which support for the feature first appeared.

Visual Studio 2017 または Visual Studio 2019 の MSVC の準拠の強化について詳しくは、「Visual Studio の C++ 準拠の強化」をご覧ください。For details on Visual Studio 2017 or Visual Studio 2019 MSVC conformance improvements, see C++ conformance improvements in Visual Studio. その他の変更の一覧については、「Visual Studio の Visual C++ の新機能」をご覧ください。For a list of other changes, see What's New for Visual C++ in Visual Studio. 以前のバージョンにおける準拠の変更点については、Visual C++ の変更履歴に関するページと「Visual C++ 2003 ~ 2015 の新機能」をご覧ください。For conformance changes in earlier versions, see Visual C++ change history and Visual C++ What's New 2003 through 2015. C++ チームからの最新情報については、C++ チームのブログを参照してください。For current news from the C++ team, visit the C++ team blog.

注意

Visual Studio 2015、Visual Studio 2017、Visual Studio 2019 間で、バイナリの破壊的変更はありません。There are no binary breaking changes between Visual Studio 2015, Visual Studio 2017, and Visual Studio 2019. 詳細については、「Visual Studio 2015、2017、2019 の間の C++ バイナリ互換性」をご覧くださいFor more information, see C++ binary compatibility between Visual Studio 2015, 2017, and 2019

コンパイラ機能Compiler features

特徴量Feature サポートされていますSupported
C++03/11 Core 言語機能C++03/11 Core language features サポート状況Supported
  その他すべて  Everything else VS 2015 AVS 2015 A
  名前の 2 段階参照  Two-phase name lookup VS 2017 15.7 BVS 2017 15.7 B
  N2634 Expression SFINAE VS 2017 15.7VS 2017 15.7
  N1653 C99 preprocessor 部分的 CPartial C
C++14 Core 言語機能C++14 Core language features サポート状況Supported
  N3323 Tweaked wording for contextual conversions VS 2013VS 2013
  N3472 Binary literals VS 2015VS 2015
  N3638 auto and decltype(auto) return types VS 2015VS 2015
  N3648 init-captures VS 2015VS 2015
  N3649 Generic lambdas VS 2015VS 2015
  N3760 [[deprecated]] attribute VS 2015VS 2015
  N3778 Sized deallocation VS 2015VS 2015
  N3781 Digit separators VS 2015VS 2015
  N3651 Variable templates VS 2015.2VS 2015.2
  N3652 Extended constexpr VS 2017 15.0VS 2017 15.0
  N3653 Default member initializers for aggregates VS 2017 15.0VS 2017 15.0
C++17 Core 言語機能C++17 Core language features サポート状況Supported
  N4086 Removing trigraphs VS 2010 14VS 2010 14
  N3922 New rules for auto with braced-init-lists VS 2015 14VS 2015 14
  N4051 typename in template template-parameters VS 2015 14VS 2015 14
  N4266 Attributes for namespaces and enumerators VS 2015 14VS 2015 14
  N4267 u8 character literals VS 2015 14VS 2015 14
  N4230 Nested namespace definitions VS 2015.3 17VS 2015.3 17
  N3928 Terse static_assert VS 2017 15.0 17VS 2017 15.0 17
  P0184R0 Generalized range-based for-loops VS 2017 15.0 14VS 2017 15.0 14
  P0188R1 [[fallthrough]] attribute VS 2017 15.0 17VS 2017 15.0 17
  P0001R1 Removing the register keyword VS 2017 15.3 17VS 2017 15.3 17
  P0002R1 Removing operator++ for bool VS 2017 15.3 17VS 2017 15.3 17
  P0018R3 Capturing *this by value VS 2017 15.3 17VS 2017 15.3 17
  P0028R4 Using attribute namespaces without repetition VS 2017 15.3 17VS 2017 15.3 17
  P0061R1 __has_include VS 2017 15.3 14VS 2017 15.3 14
  P0138R2 Direct-list-init of fixed enums from integers VS 2017 15.3 17VS 2017 15.3 17
  P0170R1 constexpr lambdas VS 2017 15.3 17VS 2017 15.3 17
  P0189R1 [[nodiscard]] attribute VS 2017 15.3 17VS 2017 15.3 17
  P0212R1 [[maybe_unused]] attribute VS 2017 15.3 17VS 2017 15.3 17
  P0217R3 Structured bindings VS 2017 15.3 17VS 2017 15.3 17
  P0292R2 constexpr if-statements VS 2017 15.3 DVS 2017 15.3 D
  P0305R1 Selection statements with initializers VS 2017 15.3 17VS 2017 15.3 17
  P1381R1 Reference capture of structured bindings VS 2017 15.3 17VS 2017 15.3 17
  P0245R1 Hexfloat literals VS 2017 15.5 17VS 2017 15.5 17
  N4268 Allowing more non-type template args VS 2017 15.5 17VS 2017 15.5 17
  N4295 Fold expressions VS 2017 15.5 17VS 2017 15.5 17
  P0003R5 Removing dynamic-exception-specifications VS 2017 15.5 17VS 2017 15.5 17
  P0012R1 Adding noexcept to the type system VS 2017 15.5 17VS 2017 15.5 17
  P0035R4 Over-aligned dynamic memory allocation VS 2017 15.5 17VS 2017 15.5 17
  P0386R2 Inline variables VS 2017 15.5 17VS 2017 15.5 17
  P0522R0 Matching template template-parameters to compatible arguments VS 2017 15.5 17VS 2017 15.5 17
  P0036R0 Removing some empty unary folds VS 2017 15.5 17VS 2017 15.5 17
  N4261 Fixing qualification conversions VS 2017 15.7 17VS 2017 15.7 17
  P0017R1 Extended aggregate initialization VS 2017 15.7 17VS 2017 15.7 17
  P0091R3 Template argument deduction for class templates
  P0512R0 Class template argument deduction issues
VS 2017 15.7 17VS 2017 15.7 17
  P0127R2 Declaring non-type template parameters with auto VS 2017 15.7 17VS 2017 15.7 17
  P0135R1 Guaranteed copy elision VS 2017 15.6VS 2017 15.6
  P0136R1 Rewording inheriting constructors VS 2017 15.7 17VS 2017 15.7 17
  P0137R1 std::launder VS 2017 15.7 17VS 2017 15.7 17
  P0145R3 Refining expression evaluation order
  P0400R0 Order of evaluation of function arguments
VS 2017 15.7 17VS 2017 15.7 17
  P0195R2 Pack expansions in using-declarations VS 2017 15.7 17VS 2017 15.7 17
  P0283R2 Ignoring unrecognized attributes VS 2015 14VS 2015 14
C++17 Core 言語機能 (不具合報告)C++17 Core language features (Defect reports) サポート状況Supported
  P0702R1 Fixing class template argument deduction for initializer-list ctors VS 2017 15.7 17VS 2017 15.7 17
  P0961R1 Relaxing the structured bindings customization point finding rules VS 2019 16.0 17VS 2019 16.0 17
  P0969R0 Allowing structured bindings to accessible members VS 2019 16.0 17VS 2019 16.0 17
  P0588R1 Simplifying implicit lambda capture VS 2019 16.4 17VS 2019 16.4 17
  P1771R1 [[nodiscard]] for constructors VS 2019 16.4 17VS 2019 16.4 17
  P1825R0 Merged wording for P0527R1 and P1155R3, more implicit moves VS 2019 16.4 17VS 2019 16.4 17
  P0929R2 Checking for abstract class types VS 2019 16.5 17VS 2019 16.5 17
  P0962R2 Relaxing the range-for loop customization point finding rules VS 2019 16.5 17VS 2019 16.5 17
  P0859R0 CWG 1581: When are constexpr member functions defined いいえNo
  P1009R2 Array size deduction in new-expressions VS 2019 16.7 17VS 2019 16.7 17
  P1286R2 Contra CWG DR1778 VS 2019 16.8 17VS 2019 16.8 17
C++20 Core 言語機能C++20 Core language features サポート状況Supported
  P0704R1 Fixing const lvalue ref-qualified pointers to members VS 2015 14VS 2015 14
  P1041R4 Make char16_t/char32_t string literals be UTF-16/32 VS 2015 14VS 2015 14
  P1330R0 Changing the active member of a union inside constexpr VS 2017 15.0 14VS 2017 15.0 14
  P0972R0 noexcept For <chrono> zero(), min(), max() VS 2017 15.7 14VS 2017 15.7 14
  P0515R3 Three-way (spaceship) comparison operator <=> VS 2019 16.0 20VS 2019 16.0 20
  P0941R2 Feature-test macros VS 2019 16.0 14VS 2019 16.0 14
  P1008R1 Prohibiting aggregates with user-declared constructors VS 2019 16.0 20VS 2019 16.0 20
  P0329R4 Designated initialization VS 2019 16.1 20VS 2019 16.1 20
  P0846R0 ADL and function templates that are not visible VS 2019 16.1 20VS 2019 16.1 20
  P0409R2 Allowing lambda-capture [=, this] VS 2019 16.2 20VS 2019 16.2 20
  P0428R2 Familiar template syntax for generic lambdas VS 2019 16.2 20VS 2019 16.2 20
  P0624R2 Default constructible and assignable stateless lambdas VS 2019 16.2 20VS 2019 16.2 20
  P0780R2 Allowing pack expansion in lambda init-capture VS 2019 16.2 20VS 2019 16.2 20
  P0806R2 Deprecate implicit capture of this via [=] VS 2019 16.2 20VS 2019 16.2 20
  P1120R0 Consistency improvements for <=> and other comparison operators VS 2019 16.2 20VS 2019 16.2 20
  P1185R2 <=> != == VS 2019 16.2 20VS 2019 16.2 20
  P0734R0 Concepts VS 2019 16.3 20VS 2019 16.3 20
  P0857R0 Fixing functionality gaps in constraints VS 2019 16.3 20VS 2019 16.3 20
  P1084R2 Today's return-type-requirements are insufficient VS 2019 16.3 20VS 2019 16.3 20
  P0892R2 Conditional explicit VS 2019 16.4 20VS 2019 16.4 20
  P1091R3 Extending structured bindings to be more like variable declarations VS 2019 16.4 20VS 2019 16.4 20
  P1099R5 Using enum VS 2019 16.4 20VS 2019 16.4 20
  P1186R3 When do you actually use <=> VS 2019 16.4 20VS 2019 16.4 20
  P1630R1 Spaceship needs a tune-up VS 2019 16.4 20VS 2019 16.4 20
  P0306R4 Adding __VA_OPT__ for comma omission and comma deletion VS 2019 16.5 20VS 2019 16.5 20
  P0614R1 Range-based for-loops with initializers VS 2019 16.5 20VS 2019 16.5 20
  P0683R1 Default member initializers for bit-fields VS 2019 16.5 20VS 2019 16.5 20
  P1002R1 try-catch blocks in constexpr functions VS 2019 16.5 20VS 2019 16.5 20
  P1161R3 Deprecate uses of the comma operator in subscripting expressions VS 2019 16.5 20VS 2019 16.5 20
  P1301R4 [[nodiscard("message")]] VS 2019 16.5 20VS 2019 16.5 20
  P1703R1 Recognizing header unit imports requires full preprocessing VS 2019 16.5 20VS 2019 16.5 20
  P1946R0 Allow defaulting comparisons by value VS 2019 16.5 20VS 2019 16.5 20
  P0479R5 [[likely]] and [[unlikely]] attributes VS 2019 16.6 20VS 2019 16.6 20
  P0692R1 Relaxing access checking on specializations VS 2019 16.6 14VS 2019 16.6 14
  P0732R2 Class types in non-type template parameters VS 2019 16.6 20VS 2019 16.6 20
  P1139R2 Address wording issues related to ISO 10646 VS 2019 16.6 14VS 2019 16.6 14
  P1907R1 Inconsistencies with non-type template parameters VS 2019 16.6 20VS 2019 16.6 20
  P1971R0 US053: Mandate the return type for return_void and return_value to be void VS 2019 16.6 20VS 2019 16.6 20
  P1971R0 US065: Apply Coroutines issue 24 from P0664R8 VS 2019 16.6 20VS 2019 16.6 20
  P1979R0 Resolution to US086 VS 2019 16.6 20VS 2019 16.6 20
  P0388R4 Permit conversions to arrays of unknown bound VS 2019 16.7 20VS 2019 16.7 20
  P0466R5 Layout-compatibility and Pointer-interconvertibility Traits VS 2019 16.7 20VS 2019 16.7 20
  P0722R3 Efficient sized delete for variable sized classes VS 2019 16.7 20VS 2019 16.7 20
  P1094R2 Nested inline namespaces VS 2019 16.7 20VS 2019 16.7 20
  P1152R4 Deprecating volatile VS 2019 16.7 20VS 2019 16.7 20
  P1331R2 Permitting trivial default initialization in constexpr contexts VS 2019 16.7 20VS 2019 16.7 20
  P1358R0 2310: Type completeness and derived-to-base pointer conversions VS 2019 16.7 20VS 2019 16.7 20
  P1452R2 On the non-uniform semantics of return-type-requirements VS 2019 16.7 20VS 2019 16.7 20
  P1616R1 Using unconstrained TTPs with constrained templates VS 2019 16.7 20VS 2019 16.7 20
  P1814R0 CTAD for alias templates VS 2019 16.7 20VS 2019 16.7 20
  P1816R0 CTAD for aggregates VS 2019 16.7 20VS 2019 16.7 20
  P1957R1 Converting from T* to bool should be considered narrowing (re: US 212) VS 2019 16.7 DRVS 2019 16.7 DR
  P1968R0 CWG 2282: Consistency with mismatched aligned/non-over-aligned allocation/deallocation functions VS 2019 16.7 20VS 2019 16.7 20
  P1969R0 CWG 2280: Matching a usual deallocation function with placement new VS 2019 16.7 20VS 2019 16.7 20
  P1969R0 CWG 2382: Array allocation overhead for non-allocating placement new VS 2019 16.7 20VS 2019 16.7 20
  P1969R0 CWG 2441: Inline function parameters VS 2019 16.7 20VS 2019 16.7 20
  P1971R0 US052: Non-executed return statements in coroutines VS 2019 16.7 20VS 2019 16.7 20
  P1972R0 US105: Check satisfaction of constraints for non-templates when forming pointer to function VS 2019 16.7 20VS 2019 16.7 20
  P1980R0 CA096: Declaration matching for non-dependent requires-clauses VS 2019 16.7 20VS 2019 16.7 20
  P2082R1 Fixing CTAD for aggregates VS 2019 16.7 20VS 2019 16.7 20
  P2085R0 Consistent defaulted comparisons VS 2019 16.7 20VS 2019 16.7 20
  P2103R0 US033: Allow "import" inside linkage-specifications VS 2019 16.7 20VS 2019 16.7 20
  P2107R0 US064: Copy semantics of coroutine parameters VS 2019 16.7 20VS 2019 16.7 20
  P0912R5 Coroutines VS 2019 16.8 20VS 2019 16.8 20
  P1103R3 Modules VS 2019 16.8 20VS 2019 16.8 20
  P0315R4 Allowing lambdas in unevaluated contexts VS 2019 16.8 20VS 2019 16.8 20
  P0848R3 Conditionally trivial special member functions VS 2019 16.8 20VS 2019 16.8 20
  P0960R3 Allow initializing aggregates from a parenthesized list of values VS 2019 16.8 20VS 2019 16.8 20
  P1766R1 Mitigating minor modules maladies VS 2019 16.8 20VS 2019 16.8 20
  P1811R0 Relaxing redefinition restrictions for re-exportation robustness VS 2019 16.8 20VS 2019 16.8 20
  P1874R1 Dynamic Initialization Order of Non-Local Variables in Modules VS 2019 16.8 20VS 2019 16.8 20
  P1975R0 Fixing the wording of parenthesized aggregate-initialization VS 2019 16.8 20VS 2019 16.8 20
  P0641R2 const mismatch with defaulted copy constructor PartialPartial
  P1141R2 Yet another approach for constrained declarations PartialPartial
  P0634R3 Down with typename! いいえNo
  P0784R7 More constexpr containers いいえNo
  P0840R2 [[no_unique_address]] attribute いいえNo
  P1064R0 Allowing virtual function calls in constant expressions いいえNo
  P1073R3 Immediate functions いいえNo
  P1143R2 constinit いいえNo
  P1327R1 Allowing dynamic_cast, polymorphic typeid in constant expressions いいえNo
  P1353R0 Missing feature-test macros いいえNo
  P1668R1 Permitting unevaluated inline assembly in constexpr functions いいえNo
  P0735R1 Interaction of memory_order_consume with release sequences 該当なしN/A
  P1236R1 Signed integers are two's complement 該当なしN/A

標準ライブラリの機能Standard library features

製品バージョン別の標準ライブラリの機能とバグ修正の詳細な一覧については、GitHub Microsoft STL wiki の変更ログに関するページを参照してください。A more detailed listing of Standard Library features and bug fixes by product version is available on the GitHub Microsoft STL wiki Changelog page.

特徴量Feature サポートされていますSupported
C++20 標準ライブラリの機能C++20 Standard library features サポート状況Supported
  P0809R0 Comparing Unordered Containers VS 2010 14VS 2010 14
  P0858R0 Constexpr Iterator Requirements VS 2017 15.3 17VS 2017 15.3 17
  P0777R1 Avoiding Unnecessary Decay VS 2017 15.7 14VS 2017 15.7 14
  P1164R1 Making create_directory() Intuitive VS 2019 16.0 20VS 2019 16.0 20
  P0550R2 remove_cvref VS 2019 16.0 20VS 2019 16.0 20
  P0318R1 unwrap_reference, unwrap_ref_decay VS 2019 16.1 20VS 2019 16.1 20
  P0457R2 starts_with()/ends_with() For basic_string/basic_string_view VS 2019 16.1 20VS 2019 16.1 20
  P0458R2 contains() For Ordered And Unordered Associative Containers VS 2019 16.1 20VS 2019 16.1 20
  P0646R1 list/forward_list remove()/remove_if()/unique() Return size_type VS 2019 16.1 20VS 2019 16.1 20
  P0769R2 shift_left(), shift_right() VS 2019 16.1 20VS 2019 16.1 20
  P0887R1 type_identity VS 2019 16.1 20VS 2019 16.1 20
  P0020R6 atomic<float>, atomic<double>, atomic<long double> VS 2019 16.2 20VS 2019 16.2 20
  P0463R1 endian VS 2019 16.2 20VS 2019 16.2 20
  P0482R6 char8_t: A type for UTF-8 characters and strings VS 2019 16.2 20VS 2019 16.2 20
  P0600R1 [[nodiscard]] For The STL, Part 1 VS 2019 16.2 20VS 2019 16.2 20
  P0653R2 to_address() VS 2019 16.2 20VS 2019 16.2 20
  P0754R2 <version> VS 2019 16.2 20VS 2019 16.2 20
  P0771R1 noexcept For std::function's Move Constructor VS 2019 16.2 20VS 2019 16.2 20
  P0487R1 Fixing operator>>(basic_istream&, CharT*) VS 2019 16.3 20VS 2019 16.3 20
  P0616R0 Using move() In <numeric> VS 2019 16.3 20VS 2019 16.3 20
  P0758R1 is_nothrow_convertible VS 2019 16.3 20VS 2019 16.3 20
  P0898R3 Standard Library Concepts VS 2019 16.3 20VS 2019 16.3 20
  P0919R3 Heterogeneous Lookup For Unordered Containers VS 2019 16.3 20VS 2019 16.3 20
  P1754R1 Rename Concepts to standard_case VS 2019 16.4 20VS 2019 16.4 20
  P0325R4 to_array from LFTS with updates VS 2019 16.5 20VS 2019 16.5 20
  P0340R3 SFINAE-Friendly underlying_type VS 2019 16.5 14VS 2019 16.5 14
  P0356R5 bind_front() VS 2019 16.5 20VS 2019 16.5 20
  P0439R0 enum class memory_order VS 2019 16.5 20VS 2019 16.5 20
  P0553R4 <bit> Rotating And Counting Functions VS 2019 16.5 20VS 2019 16.5 20
  P0556R3 <bit> ispow2(), ceil2(), floor2(), log2p1() VS 2019 16.5 20VS 2019 16.5 20
  P0595R2 is_constant_evaluated() VS 2019 16.5 20VS 2019 16.5 20
  P0631R8 <numbers> Math Constants VS 2019 16.5 20VS 2019 16.5 20
  P0655R1 visit<R>() VS 2019 16.5 20VS 2019 16.5 20
  P0738R2 istream_iterator Cleanup VS 2019 16.5 14VS 2019 16.5 14
  P0767R1 Deprecating is_pod VS 2019 16.5 20VS 2019 16.5 20
  P0966R1 string::reserve() Should Not Shrink VS 2019 16.5 20VS 2019 16.5 20
  P1209R0 erase_if(), erase() VS 2019 16.5 20VS 2019 16.5 20
  P1227R2 Signed std::ssize(), Unsigned span::size() VS 2019 16.5 20VS 2019 16.5 20
  P1355R2 Narrow Contract For ceil2() VS 2019 16.5 20VS 2019 16.5 20
  P1357R1 is_bounded_array, is_unbounded_array VS 2019 16.5 20VS 2019 16.5 20
  P1612R1 Relocating endian To <bit> VS 2019 16.5 20VS 2019 16.5 20
  P1651R0 bind_front() Should Not Unwrap reference_wrapper VS 2019 16.5 20VS 2019 16.5 20
  P1690R1 Refining Heterogeneous Lookup For Unordered Containers VS 2019 16.5 20VS 2019 16.5 20
  P1902R1 Missing Feature-Test Macros 2017-2019 VS 2019 16.5 14VS 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 20VS 2019 16.6 20
  P0202R3 constexpr for <algorithm> and exchange() VS 2019 16.6 20VS 2019 16.6 20
  P0357R3 Supporting Incomplete Types In reference_wrapper VS 2019 16.6 20VS 2019 16.6 20
  P0619R4 Removing C++17-Deprecated Features In C++20 VS 2019 16.6 20VS 2019 16.6 20
  P0879R0 constexpr for swapping functions VS 2019 16.6 20VS 2019 16.6 20
  P0883R2 Fixing atomic initialization VS 2019 16.6 14VS 2019 16.6 14
  P0935R0 Eradicating Unnecessarily Explicit Default Constructors VS 2019 16.6 14VS 2019 16.6 14
  P1006R1 constexpr For pointer_traits<T*>::pointer_to() VS 2019 16.6 20VS 2019 16.6 20
  P1165R1 Consistently Propagating Stateful Allocators In basic_string's operator+() VS 2019 16.6 14VS 2019 16.6 14
  P1423R3 char8_t backward compatibility remediation VS 2019 16.6 20VS 2019 16.6 20
  P1645R1 constexpr for <numeric> algorithms VS 2019 16.6 20VS 2019 16.6 20
  P0415R1 constexpr For <complex> (Again) VS 2019 16.7 20VS 2019 16.7 20
  P0476R2 <bit> bit_cast VS 2019 16.7 20VS 2019 16.7 20
  P0528R3 Atomic Compare-And-Exchange With Padding Bits VS 2019 16.7 20VS 2019 16.7 20
  P0586R2 Integer comparison functions VS 2019 16.7 20VS 2019 16.7 20
  P0674R1 make_shared() For Arrays VS 2019 16.7 20VS 2019 16.7 20
  P0718R2 atomic<shared_ptr<T>>, atomic<weak_ptr<T>> VS 2019 16.7 20VS 2019 16.7 20
  P1023R0 constexpr For std::array Comparisons VS 2019 16.7 20VS 2019 16.7 20
  P1115R3 erase()/erase_if() Return size_type VS 2019 16.7 20VS 2019 16.7 20
  P1831R1 Deprecating volatile in the standard library VS 2019 16.7 20VS 2019 16.7 20
  P1871R1 Concept traits should be named after concepts VS 2019 16.7 20VS 2019 16.7 20
  P1956R1 <bit> has_single_bit(), bit_ceil(), bit_floor(), bit_width() VS 2019 16.7 20VS 2019 16.7 20
  P1964R2 Replacing boolean With boolean-testable VS 2019 16.7 20VS 2019 16.7 20
  P1976R2 Fixed-size span construction from dynamic range VS 2019 16.7 20VS 2019 16.7 20
  P2091R0 Issues with range access CPOs VS 2019 16.7 20VS 2019 16.7 20
  P2102R0 Make "implicit expression variations" more explicit VS 2019 16.7 20VS 2019 16.7 20
  P2116R0 Remove tuple-like protocol support from fixed-extent span VS 2019 16.7 20VS 2019 16.7 20
  P0019R8 atomic_ref VS 2019 16.8 20VS 2019 16.8 20
  P0528R3 Library support for atomic compare-and-exchange with padding bits VS 2019 16.8 20VS 2019 16.8 20
  P0811R3 midpoint(), lerp() VS 2019 16.3 で一部、16.8 で完全に 20Partial in VS 2019 16.3, complete in 16.8 20
  P0912R5 Library Support For Coroutines VS 2019 16.8 20VS 2019 16.8 20
  P1001R2 execution::unseq VS 2019 16.8 20VS 2019 16.8 20
  P1032R1 Miscellaneous constexpr VS 2019 16.8 20VS 2019 16.8 20
  P1065R2 constexpr INVOKE VS 2019 16.8 20VS 2019 16.8 20
  P1123R0 Editorial Guidance for merging P0019r8 and P0528r3 VS 2019 16.8 20VS 2019 16.8 20
  P1135R6 The C++20 Synchronization Library VS 2019 16.8 20VS 2019 16.8 20
  P1960R0 NB Comment Changes Reviewed by SG1 VS 2019 16.8 20VS 2019 16.8 20
  P0053R7 <syncstream>
  P0753R2 osyncstream Manipulators
いいえNo
  P0339R6 polymorphic_allocator<> いいえNo
  P0355R7 <chrono> Calendars And Time Zones いいえNo
  P0408R7 Efficient access To basic_stringbuf's buffer いいえNo
  P0466R5 Library support for layout-compatibility and pointer-interconvertibility traits いいえNo
  P0475R1 Guaranteed Copy Elision For Piecewise Construction いいえNo
  P0591R4 Utility Functions For Uses-Allocator Construction いいえNo
  P0608R3 Improving variant's Converting Constructor/Assignment いいえNo
  P0645R10 <format> Text Formatting いいえNo
  P0660R10 <stop_token> and jthread いいえNo
  P0768R1 Library Support For The Spaceship Comparison Operator <=> VS 2019 16.0 の一部 20Partial in VS 2019 16.0 20
  P0784R7 Library support for more constexpr containers VS 2019 16.7 で一部 20Partial in VS 2019 16.7 20
  P0896R4 <ranges> VS 2019 16.8 で一部 20Partial in VS 2019 16.8 20
  P0980R1 constexpr std::string いいえNo
  P1004R2 constexpr std::vector いいえNo
  P1007R3 assume_aligned() いいえNo
  P1020R1 Smart Pointer Creation With Default Initialization いいえNo
  P1208R6 <source_location> いいえNo
  P1285R0 Improving Completeness Requirements For Type Traits いいえNo
  P1502R1 Standard Library Header Units いいえNo
  P1614R2 Adding Spaceship <=> To The Library VS 2019 16.7 で一部 20Partial in VS 2019 16.7 20
  P1771R1 Library support for [[nodiscard]] for constructors いいえNo
C++17 標準ライブラリの機能C++17 Standard library features サポート状況Supported
  LWG 2221 Formatted output operator for nullptr VS 2019 16.1VS 2019 16.1
  N3911 void_t VS 2015 14VS 2015 14
  N4089 Safe Conversions In unique_ptr<T[]> VS 2015 14VS 2015 14
  N4169 invoke() VS 2015 14VS 2015 14
  N4190 Removing auto_ptr, random_shuffle(), And Old <functional> Stuff VS 2015 remVS 2015 rem
  N4258 noexcept Cleanups VS 2015 14VS 2015 14
  N4259 uncaught_exceptions() VS 2015 14VS 2015 14
  N4277 Trivially Copyable reference_wrapper VS 2015 14VS 2015 14
  N4279 insert_or_assign()/try_emplace() For map/unordered_map VS 2015 14VS 2015 14
  N4280 size(), empty(), data() VS 2015 14VS 2015 14
  N4366 Precisely Constraining unique_ptr Assignment VS 2015 14VS 2015 14
  N4387 Improving pair And tuple VS 2015.2 14VS 2015.2 14
  N4389 bool_constant VS 2015 14VS 2015 14
  N4508 shared_mutex (Untimed) VS 2015.2 14VS 2015.2 14
  N4510 Supporting Incomplete Types In vector/list/forward_list VS 2013 14VS 2013 14
  N4562 Library Fundamentals: <algorithm> sample() VS 2017 15.0VS 2017 15.0
  N4562 Library Fundamentals: <any> VS 2017 15.0VS 2017 15.0
  N4562 Library Fundamentals: <memory_resource>
  P0337R0 Deleting polymorphic_allocator Assignment
VS 2017 15.6VS 2017 15.6
  N4562 Library Fundamentals: <optional> VS 2017 15.0VS 2017 15.0
  N4562 Library Fundamentals: <string_view> VS 2017 15.0VS 2017 15.0
  N4562 Library Fundamentals: <tuple> apply() VS 2017 15.0VS 2017 15.0
  N4562 Library Fundamentals: Boyer-Moore search()
  P0253R1 Fixing Searcher Return Types
VS 2017 15.3 17VS 2017 15.3 17
  P0003R5 Removing Dynamic Exception Specifications VS 2017 15.5 17VS 2017 15.5 17
  P0004R1 Removing Deprecated Iostreams Aliases VS 2015.2 remVS 2015.2 rem
  P0005R4 not_fn()
  P0358R1 Fixes For not_fn()
VS 2017 15.5 17VS 2017 15.5 17
  P0006R0 Variable Templates For Type Traits (is_same_v, etc.) VS 2015.2 14VS 2015.2 14
  P0007R1 as_const() VS 2015.2 14VS 2015.2 14
  P0013R1 Logical Operator Type Traits (conjunction, etc.) VS 2015.2 14VS 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.7VS 2017 15.7
  P0025R1 clamp() VS 2015.3VS 2015.3
  P0030R1 hypot(x, y, z) VS 2017 15.7VS 2017 15.7
  P0031R0 constexpr For <array> (Again) And <iterator> VS 2017 15.3 17VS 2017 15.3 17
  P0032R3 Homogeneous Interface For variant/any/optional VS 2017 15.0VS 2017 15.0
  P0033R1 Rewording enable_shared_from_this VS 2017 15.5 14VS 2017 15.5 14
  P0040R3 Extending Memory Management Tools VS 2017 15.3 17VS 2017 15.3 17
  P0063R3 C11 Standard Library VS 2015 C1114VS 2015 C11, 14
  P0067R5 Elementary String Conversions VS 2019 16.4 charconvVS 2019 16.4 charconv
  P0074R0 owner_less<> VS 2015.2 14VS 2015.2 14
  P0077R2 is_callable, is_nothrow_callable VS 2017 15.0VS 2017 15.0
  P0083R3 Splicing Maps And Sets
  P0508R0 Clarifying insert_return_type
VS 2017 15.5 17VS 2017 15.5 17
  P0084R2 Emplace Return Type VS 2017 15.3 17VS 2017 15.3 17
  P0088R3 <variant> VS 2017 15.0VS 2017 15.0
  P0092R1 <chrono> floor(), ceil(), round(), abs() VS 2015.2 14VS 2015.2 14
  P0152R1 atomic::is_always_lock_free VS 2017 15.3 17VS 2017 15.3 17
  P0154R1 hardware_destructive_interference_size, etc. VS 2017 15.3 17VS 2017 15.3 17
  P0156R0 Variadic lock_guard VS 2015.2 14VS 2015.2 14
  P0156R2 Renaming Variadic lock_guard to scoped_lock VS 2017 15.3 17VS 2017 15.3 17
  P0163R0 shared_ptr::weak_type VS 2017 15.0VS 2017 15.0
  P0174R2 Deprecating Vestigial Library Parts VS 2017 15.5 17VS 2017 15.5 17
  P0185R1 is_swappable, is_nothrow_swappable VS 2015.3VS 2015.3
  P0209R2 make_from_tuple() VS 2017 15.0VS 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 EVS 2017 15.7 E
  P0220R1 Library Fundamentals V1 VS 2017 15.6VS 2017 15.6
  P0226R1 Mathematical Special Functions VS 2017 15.7VS 2017 15.7
  P0254R2 Integrating string_view And std::string VS 2017 15.0VS 2017 15.0
  P0258R2 has_unique_object_representations VS 2017 15.3 GVS 2017 15.3 G
  P0272R1 Non-const basic_string::data() VS 2015.3VS 2015.3
  P0295R0 gcd(), lcm() VS 2017 15.3 17VS 2017 15.3 17
  P0298R3 std::byte VS 2017 15.3 17、 byteVS 2017 15.3 17byte
  P0302R1 Removing Allocator Support In std::function VS 2017 15.5 17VS 2017 15.5 17
  P0307R2 Making Optional Greater Equal Again VS 2017 15.0VS 2017 15.0
  P0393R3 Making Variant Greater Equal VS 2017 15.0VS 2017 15.0
  P0403R1 UDLs For <string_view> ("meow"sv, etc.) VS 2017 15.3 17VS 2017 15.3 17
  P0414R2 shared_ptr<T[]>, shared_ptr<T[N]>
  P0497R0 Fixing shared_ptr For Arrays
VS 2017 15.5 14VS 2017 15.5 14
  P0418R2 atomic compare_exchange memory_order Requirements VS 2017 15.3 14VS 2017 15.3 14
  P0426R1 constexpr For char_traits VS 2017 15.7VS 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.7VS 2017 15.7
  P0435R1 Overhauling common_type
  P0548R1 Tweaking common_type and duration
VS 2017 15.3 14VS 2017 15.3 14
  P0504R0 Revisiting in_place_t/in_place_type_t<T>/in_place_index_t<I> VS 2017 15.0VS 2017 15.0
  P0505R0 constexpr For <chrono> (Again) VS 2017 15.3 17VS 2017 15.3 17
  P0510R0 Rejecting variants Of Nothing, Arrays, References, And Incomplete Types VS 2017 15.0VS 2017 15.0
  P0513R0 Poisoning hash
  P0599R1 noexcept hash
VS 2017 15.3 14VS 2017 15.3 14
  P0516R0 Marking shared_future Copying As noexcept VS 2017 15.3 14VS 2017 15.3 14
  P0517R0 Constructing future_error From future_errc VS 2017 15.3 14VS 2017 15.3 14
  P0521R0 Deprecating shared_ptr::unique() VS 2017 15.5 17VS 2017 15.5 17
  P0558R1 Resolving atomic<T> Named Base Class Inconsistencies VS 2017 15.3 14VS 2017 15.3 14
  P0595R2 std::is_constant_evaluated() VS 2019 16.5 20VS 2019 16.5 20
  P0602R4 Propagating Copy/Move Triviality In variant/optional VS 2017 15.317VS 2017 15.317
  P0604R0 Changing is_callable/result_of To invoke_result, is_invocable, is_nothrow_invocable VS 2017 15.3 17VS 2017 15.3 17
  P0607R0 Inline Variables for the Standard Library VS 2017 15.5 17VS 2017 15.5 17
  P0618R0 Deprecating <codecvt> VS 2017 15.5 17VS 2017 15.5 17
  P0682R1 Repairing Elementary String Conversions VS 2015 15.7 17VS 2015 15.7 17
C++14 標準ライブラリの機能C++14 Standard library features サポート状況Supported
  N3462 SFINAE-Friendly result_of VS 2015.2VS 2015.2
  N3302 constexpr For <complex> VS 2015VS 2015
  N3469 constexpr For <chrono> VS 2015VS 2015
  N3470 constexpr For <array> VS 2015VS 2015
  N3471 constexpr For <initializer_list>, <tuple>, <utility> VS 2015VS 2015
  N3545 integral_constant::operator()() VS 2015VS 2015
  N3642 UDLs For <chrono>, <string> (1729ms, "meow"s, etc.) VS 2015VS 2015
  N3644 Null Forward Iterators VS 2015VS 2015
  N3654 quoted() VS 2015VS 2015
  N3657 Heterogeneous Associative Lookup VS 2015VS 2015
  N3658 integer_sequence VS 2015VS 2015
  N3659 shared_mutex (Timed) VS 2015VS 2015
  N3668 exchange() VS 2015VS 2015
  N3669 Fixing constexpr Member Functions Without const VS 2015VS 2015
  N3670 get<T>() VS 2015VS 2015
  N3671 Dual-Range equal(), is_permutation(), mismatch() VS 2015VS 2015
  N3778 Sized Deallocation VS 2015VS 2015
  N3779 UDLs For <complex> (3.14i, etc.) VS 2015VS 2015
  N3789 constexpr For <functional> VS 2015VS 2015
  N3887 tuple_element_t VS 2015VS 2015
  N3891 Renaming shared_mutex (Timed) To shared_timed_mutex VS 2015VS 2015
  N3346 Minimal Container Element Requirements VS 2013VS 2013
  N3421 Transparent Operator Functors (less<>, etc.) VS 2013VS 2013
  N3655 Alias Templates For <type_traits> (decay_t, etc.) VS 2013VS 2013
  N3656 make_unique() VS 2013VS 2013

複数の提案書がまとめて記載されている箇所は、承認された 1 つ以上の改善または拡張機能と併せた標準機能を示しています。A group of papers listed together indicates a Standard feature along with one or more approved improvements or expansions. これらの機能はまとめて実装されます。These features are implemented together.

サポート状況の値Supported values

いいえ は、未実装という意味です。No means not yet implemented.
部分的 は、実装が部分的であるという意味です。Partial means the implementation is incomplete. 詳細については、「メモ」セクションを参照してください。For more information, see the Notes section.
VS 2010 は、Visual Studio 2010 でサポートされている機能を示します。VS 2010 indicates features that are supported in Visual Studio 2010.
VS 2013 は、Visual Studio 2013 でサポートされている機能を示します。VS 2013 indicates features that are supported in Visual Studio 2013.
VS 2015 は、Visual Studio 2015 (RTW) でサポートされている機能を示します。VS 2015 indicates features that are supported in Visual Studio 2015 (RTW).
VS 2015.2VS 2015.3 はそれぞれ、Visual Studio 2015 更新プログラム 2 と Visual Studio 2015 更新プログラム 3 でサポートされている機能を示します。VS 2015.2 and VS 2015.3 indicate features that are supported in Visual Studio 2015 Update 2 and Visual Studio 2015 Update 3, respectively.
VS 2017 15.0 は、Visual Studio 2017 バージョン 15.0 (RTW) でサポートされている機能を示します。VS 2017 15.0 indicates features that are supported in Visual Studio 2017 version 15.0 (RTW).
VS 2017 15.3 は、Visual Studio 2017 バージョン 15.3 でサポートされている機能を示します。VS 2017 15.3 indicates features that are supported in Visual Studio 2017 version 15.3.
VS 2017 15.5 は、Visual Studio 2017 バージョン 15.5 でサポートされている機能を示します。VS 2017 15.5 indicates features that are supported in Visual Studio 2017 version 15.5.
VS 2017 15.7 は、Visual Studio 2017 バージョン 15.7 でサポートされている機能を示します。VS 2017 15.7 indicates features that are supported in Visual Studio 2017 version 15.7.
VS 2019 16.0 は、Visual Studio 2019 バージョン 16.0 (RTW) でサポートされている機能を示します。VS 2019 16.0 indicates features that are supported in Visual Studio 2019 version 16.0 (RTW).
VS 2019 16.1 は、Visual Studio 2019 バージョン 16.1 でサポートされている機能を示します。VS 2019 16.1 indicates features that are supported in Visual Studio 2019 version 16.1.
VS 2019 16.2 は、Visual Studio 2019 バージョン 16.2 でサポートされている機能を示します。VS 2019 16.2 indicates features that are supported in Visual Studio 2019 version 16.2.
VS 2019 16.3 は、Visual Studio 2019 バージョン 16.3 でサポートされている機能を示します。VS 2019 16.3 indicates features that are supported in Visual Studio 2019 version 16.3.
VS 2019 16.4 は、Visual Studio 2019 バージョン 16.4 でサポートされている機能を示します。VS 2019 16.4 indicates features that are supported in Visual Studio 2019 version 16.4.
VS 2019 16.5 は、Visual Studio 2019 バージョン 16.5 でサポートされている機能を示します。VS 2019 16.5 indicates features that are supported in Visual Studio 2019 version 16.5.
VS 2019 16.6 は、Visual Studio 2019 バージョン 16.6 でサポートされている機能を示します。VS 2019 16.6 indicates features that are supported in Visual Studio 2019 version 16.6.
VS 2019 16.7 は、Visual Studio 2019 バージョン 16.7 でサポートされている機能を示します。VS 2019 16.7 indicates features that are supported in Visual Studio 2019 version 16.7.
VS 2019 16.8 は、Visual Studio 2019 バージョン 16.8 でサポートされている機能を示します。VS 2019 16.8 indicates features that are supported in Visual Studio 2019 version 16.8.

メモNotes

A /std:c++14 モードには、動的例外指定は実装されておらず、throw() は引き続き __declspec(nothrow) のシノニムとして扱われています。A In /std:c++14 mode, dynamic exception specifications remain unimplemented, and throw() is still treated as a synonym for __declspec(nothrow). C++ 17 では、1 つの形跡を除き、動的例外指定が P0003R5 でほとんど削除されています。throw() は廃止され、 noexcept のシノニムとして動作する必要があります。In C++17, dynamic exception specifications were mostly removed by P0003R5, leaving one vestige: throw() is deprecated and required to behave as a synonym for noexcept. /std:c++17 モードの MSVC は、throw()noexcept と同じ動作 (つまり、終了を使った強制) を与えることによって、標準に準拠するようになりました。In /std:c++17 mode, MSVC now conforms to the Standard by giving throw() the same behavior as noexcept, that is, enforcement via termination.

コンパイラ オプション /Zc:noexceptTypes を指定すると、以前の __declspec(nothrow) の動作が要求されます。The compiler option /Zc:noexceptTypes requests our old behavior of __declspec(nothrow). throw() は、C++20 で削除される可能性があります。It's likely that throw() will be removed in C++20. 標準および実装へ、これらの変更に対応するコードを移行するのを支援するために、/std:c++17/permissive- に、例外の指定の問題の新しいコンパイラ警告が追加されました。To help with migrating code in response to these changes in the Standard and our implementation, new compiler warnings for exception specification issues have been added under /std:c++17 and /permissive-.

B Visual Studio 2017 バージョン 15.7 の /permissive- モードでサポートされています。B Supported in /permissive- mode in Visual Studio 2017 version 15.7. 詳細については、「2 フェーズの名前参照のサポートを MSVC に導入」を参照してください。For more information, see Two-phase name lookup support comes to MSVC.

C Visual Studio 2017 バージョン 15.8 以降、コンパイラからは、/experimental:preprocessor コンパイラ スイッチ経由で C99 プリプロセッサのサポートが提供されます。C Starting in Visual Studio 2017 version 15.8, the compiler provides support for the C99 preprocessor via the /experimental:preprocessor compiler switch. Visual Studio 2019 バージョン 16.6 以降、コンパイラによって、/Zc:preprocessor スイッチ経由で C99 プリプロセッサが完全実装されます。Starting in Visual Studio 2019 version 16.6, the compiler fully implements the C99 preprocessor via the /Zc:preprocessor switch. コンパイラ スイッチの /std:c11 または /std:c17 が指定されているとき、これは既定でオンになります。It is on by default when the compiler switch /std:c11 or /std:c17 is specified.

D /std:c++14 で、非表示にできる警告 C4984 と共にサポートされています。D Supported under /std:c++14 with a suppressible warning, C4984.

E これは、完全に新しい実装であり、以前の std::experimental バージョンとは対応していません。これは、symlink サポート、バグ修正、標準で要求される動作への変更で必要です。E This is a wholly new implementation, incompatible with the previous std::experimental version, made necessary by symlink support, bug fixes, and changes in standard-required behavior. 現在、<filesystem> を含めると、新しい std::filesystem と以前の std::experimental::filesystem が提供され、<experimental/filesystem> を含めると、古い実験的な実装のみが提供されます。Currently, including <filesystem> provides the new std::filesystem and the previous std::experimental::filesystem, and including <experimental/filesystem> provides only the old experimental implementation. この実験的な実装は、ライブラリの次の ABI の重大なリリースで削除されます。The experimental implementation will be REMOVED in the next ABI-breaking release of the libraries.

G コンパイラ組み込みでサポートされています。G Supported by a compiler intrinsic.

14 これらの C++17/20 機能は、/std:c++14 (既定) が指定されているときでも、常に有効です。14 These C++17/20 features are always enabled, even when /std:c++14 (the default) is specified. その理由は、 /std オプションを導入する前にこの機能が実装されたため、または条件付きの実装が不必要に複雑だったためです。The reason is either because the feature was implemented before the introduction of the /std options, or because conditional implementation was undesirably complex.

17 これらの機能は /std:c++17 (または /std:c++latest) コンパイラ オプションにより有効化されています。17 These features are enabled by the /std:c++17 (or /std:c++latest) compiler option.

20 これらの機能は /std:c++latest コンパイラ オプションにより有効化されています。20 These features are enabled by the /std:c++latest compiler option. C++20 の実装が完了すると、新しい /std:c++20 コンパイラ オプションが追加され、ここでもこれらの機能が使用可能になります。When the C++20 implementation is complete, a new /std:c++20 compiler option will be added, under which these features will also be available.

DR これらの機能はすべての /std コンパイラ オプション モードで有効になります。DR These features are enabled in all /std compiler option modes. C++標準化委員会では、C++11 以降のすべてのバージョンに対する遡及的な障害レポートとして、これが採用されています。The C++ Standard committee adopted this as a retroactive Defect Report to C++11 and all later versions.

byte std::byte/std:c++17 (または /std:c++latest) により有効になっていますが、Windows SDK のヘッダーと競合することがあるため、細かいオプトアウト マクロがあります。byte std::byte is enabled by /std:c++17 (or /std:c++latest), but because it can conflict with the Windows SDK headers in some cases, it has a fine-grained opt-out macro. _HAS_STD_BYTE0 として定義することで無効にできます。It can be disabled by defining _HAS_STD_BYTE as 0.

C11 C11 のコンパイラ サポートには、Visual Studio バージョン 16.8 以降が必要です。C11 Compiler support for C11 requires Visual Studio version 16.8, or higher. C11 ライブラリ サポートには、Windows SDK バージョン 20211 以降が必要です。C11 library support requires Windows SDK version 20211, or higher. ユニバーサル CRT では、C++17 で必要となる C11 標準ライブラリの部分を実装します。C99 strftime() E/O 代替変換指定子と C11 aligned_alloc() は除きます。The Universal CRT implements the parts of the C11 Standard Library that are required by C++17, with the exception of C99 strftime() E/O alternative conversion specifiers, and C11 aligned_alloc(). Windows オペレーティング システムでは割り当てを調整しないため、後者は実装される可能性が少ないです。The latter is unlikely to be implemented because the Windows operating system doesn't support aligned allocations.

rem /std:c++17 (または /std:c++latest) コンパイラ オプションが指定されたときに削除される機能。rem Features removed when the /std:c++17 (or /std:c++latest) compiler option is specified. 次のマクロを使うことで、これらの機能を再び有効化し、新しい言語モードへの移行を容易にすることができます: _HAS_AUTO_PTR_ETC_HAS_FUNCTION_ALLOCATOR_SUPPORT_HAS_OLD_IOSTREAMS_MEMBERS_HAS_UNEXPECTEDThese features can be re-enabled to ease the transition to newer language modes by use of these macros: _HAS_AUTO_PTR_ETC, _HAS_FUNCTION_ALLOCATOR_SUPPORT, _HAS_OLD_IOSTREAMS_MEMBERS, and _HAS_UNEXPECTED.

charconvfrom_chars()to_chars() は整数に対して使えます。charconv from_chars() and to_chars() are available for integers. 浮動小数点の from_chars() と浮動小数点の to_chars() のタイムラインは次のとおりです。The timeline for floating-point from_chars() and floating-point to_chars() is as follows:

  • VS 2017 15.7:整数の from_chars()to_chars()VS 2017 15.7: Integer from_chars() and to_chars().
  • VS 2017 15.8:浮動小数点の from_chars()VS 2017 15.8: Floating-point from_chars().
  • VS 2017 15.9:浮動小数点の to_chars() により最短の 10 進数がオーバーロードされます。VS 2017 15.9: Floating-point to_chars() overloads for shortest decimal.
  • VS 2019 16.0:浮動小数点の to_chars() により最短の 16 進数と高精度の 16 進数がオーバーロードされます。VS 2019 16.0: Floating-point to_chars() overloads for shortest hex and precision hex.
  • VS 2019 16.2:浮動小数点の to_chars() により高精度の固定値と高精度の科学的表記がオーバーロードされます。VS 2019 16.2: Floating-point to_chars() overloads for precision fixed and precision scientific.
  • VS 2019 16.4:浮動小数点の to_chars() により高精度の全般がオーバーロードされます。VS 2019 16.4: The floating-point to_chars() overload for precision general.

parallel C++17 の並列アルゴリズムのライブラリが完成しました。parallel C++17's parallel algorithms library is complete. 完成したというのは、すべてのアルゴリズムがすべてのケースで並列化されるという意味ではありません。Complete doesn't mean every algorithm is parallelized in every case. 最も重要なアルゴリズムが並列化されていて、アルゴリズムが並列化されていない場所でも実行ポリシーのシグネチャが提供されます。The most important algorithms have been parallelized, and execution policy signatures are provided even where algorithms aren't parallelized. 実装の中央内部ヘッダー yvals_core.h には、次の "並列アルゴリズムのメモ" が含まれています。C++ ではシリアル アルゴリズムへの呼び出しとして並列アルゴリズムを実装することが許可されています。Our implementation's central internal header, yvals_core.h, contains the following "Parallel Algorithms Notes": C++ allows an implementation to implement parallel algorithms as calls to the serial algorithms. この実装では、いくつかの一般的なアルゴリズムの呼び出しを並列化しますが、すべては行いません。This implementation parallelizes several common algorithm calls, but not all.

並列化されるアルゴリズムは以下のとおりです。The following algorithms are parallelized:

  • adjacent_difference, adjacent_find, all_of, any_of, count, count_if, equal, exclusive_scan, find, find_end, find_first_of, find_if, find_if_not, for_each, for_each_n, inclusive_scan, is_heap, is_heap_until, is_partitioned, is_sorted, is_sorted_until, mismatch, none_of, partition, reduce, remove, remove_if, replace, replace_if, search, search_n, set_difference, set_intersection, sort, stable_sort, transform, transform_exclusive_scan, transform_inclusive_scan, transform_reduceadjacent_difference, adjacent_find, all_of, any_of, count, count_if, equal, exclusive_scan, find, find_end, find_first_of, find_if, find_if_not, for_each, for_each_n, inclusive_scan, is_heap, is_heap_until, is_partitioned, is_sorted, is_sorted_until, mismatch, none_of, partition, reduce, remove, remove_if, replace, replace_if, search, search_n, set_difference, set_intersection, sort, stable_sort, transform, transform_exclusive_scan, transform_inclusive_scan, transform_reduce

次のものは現在並列化されていません。The following aren't presently parallelized:

  • ターゲット ハードウェア上で、並列化による顕著なパフォーマンス改善はありません。要素を単にコピーするか順序を変えるだけの、分岐のないすべてのアルゴリズムは、通常、メモリの帯域幅が制限されます。No noticeable parallelism performance improvement on target hardware; all algorithms that merely copy or permute elements with no branches are typically memory bandwidth limited:
    • copy, copy_n, fill, fill_n, move, reverse, reverse_copy, rotate, rotate_copy, shift_left, shift_right, swap_rangescopy, copy_n, fill, fill_n, move, reverse, reverse_copy, rotate, rotate_copy, shift_left, shift_right, swap_ranges
  • ユーザーの並列処理の要件の、おそらく次のカテゴリで (あるいは上記のカテゴリでも) 混乱が生じる可能性があります。Confusion over user parallelism requirements exists; likely in the above category anyway:
    • generate, generate_ngenerate, generate_n
  • 実行不可能だと思われる有効な並列処理は以下のとおりです。Effective parallelism suspected to be infeasible:
    • partial_sort, partial_sort_copypartial_sort, partial_sort_copy
  • まだ評価はされていませんが、次の並列化は今後のリリースで実装される可能性があり、メリットがあると想定されています。Not yet evaluated; parallelism may be implemented in a future release and is suspected to be beneficial:
    • 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_copycopy_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

関連項目See also

C++ 言語リファレンスC++ Language Reference
C++ 標準ライブラリC++ Standard Library
Visual Studio の C++ 準拠の強化C++ conformance improvements in Visual Studio
Visual Studio の Visual C++ の新機能What's New for Visual C++ in Visual Studio
Visual C++ 2003 から 2015 の変更履歴Visual C++ change history 2003 through 2015
2003 から 2015 の Visual C++ の新機能Visual C++ What's New 2003 through 2015
C++ チーム ブログC++ team blog