https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations#recs.cpp17
C++17 featuresThe following table itemizes all the changes that were made to the working draft for C++17 as specified in a WG21 technical document. (Changes that were made as specified in a core or library issue are not generally included.)
The table is sorted by the section of the standard primarily affected. The “Doc. No.” column links to the paper itself on the committee web site. The “Macro Name” column links to the relevant portion of the “Detailed explanation and rationale” section of this document. When the recommendation is to change the value of a macro previously recommended to be defined, the “Value” column links to the table entry for the previous recommendation.
For library features, the “Header“ column identifies the header that is expected to define the macro, although the macro may also be predefined. For language features, the macro must be predefined.
Significant changes to C++17 Doc. No. Title Primary Section Macro Name Value Header N4086 Removing trigraphs??! 2.4 none N4267 Adding u8 character literals 2.14 none N4261 Proposed resolution for Core Issue 330: Qualification conversions and pointers to arrays of pointers 4.4, 5.2 none P0012R1 Make exception specifications be part of the type system 4.12, 15.4 __cpp_noexcept_function_type 201510 predefined N4295 Folding expressions 5.1, 14.5, 14.6 __cpp_fold_expressions 201411 predefined P0002R1 Remove Deprecated operator++(bool) 5.3 none N3928 Extending static_assert 7 __cpp_static_assert 201411 predefined N3922 New Rules for auto deduction from braced-init-list 7.1 none P0001R1 Remove Deprecated Use of the register Keyword 7.1 none N4266 Attributes for namespaces and enumerators 7.2, 7.3 __cpp_namespace_attributes 201411 predefined __cpp_enumerator_attributes 201411 predefined N4230 Nested namespace definition 7.3 __cpp_nested_namespace_definitions 201411 predefined P0136R1 Rewording inheriting constructors (core issue 1941 et al) 7.3 __cpp_inheriting_constructors 201511 predefined P0134R0 Introducing a name for brace-or-equal-initializers for non-static data members 9.2 none N4051 Allow typename in a template template parameter 14.1 none N4268 Allow constant evaluation for all non-type template arguments 14.3 __cpp_nontype_template_args 201411 predefined N4262 Wording for Forwarding References 14.8 none N4285 Cleanup for exception-specification and throw-expression 15 none P0061R1 __has_include for C++17 16.1 none N4259 Wording for std::uncaught_exceptions 18.8 __cpp_lib_uncaught_exceptions 201411 <exception> P0007R1 Constant View: A proposal for a std::as_const helper function template 20.2 __cpp_lib_as_const 201510 <utility> N4387 Improving pair and tuple 20.3, 20.4 none 201505 <utility> <tuple> N4190 Removing auto_ptr, random_shuffle(), And Old <functional> Stuff 20.7-20.9 none P0074R0 Making std::owner_less more flexible 20.7 __cpp_lib_transparent_operators 201510 <memory> <functional> N4089 Safe conversions in unique_ptr<T[]> 20.8 none N4366 LWG 2228: Missing SFINAE rule in unique_ptr templated assignment 20.8 none N4169 A proposal to add invoke function template 20.9 __cpp_lib_invoke 201411 <functional> N4277 TriviallyCopyable reference_wrapper 20.9 none N3911 TransformationTrait Alias void_t 20.10 __cpp_lib_void_t 201411 <type_traits> N4389 Wording for bool_constant 20.10 __cpp_lib_bool_constant 201505 <type_traits> P0006R0 Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17 20.10 __cpp_lib_type_trait_variable_templates 201510 <type_traits> P0013R1 Logical Operator Type Traits 20.10 __cpp_lib_logical_traits 201510 <type_traits> P0092R1 Polishing <chrono> 20.12 __cpp_lib_chrono 201510 <chrono> N4258 Cleaning-up noexcept in the Library 21.4, 23.3-23.5 __cpp_lib_allocator_traits_is_always_equal 201411 <memory> <scoped_allocator> <string> <deque> <forward_list> <list> <vector> <map> <set> <unordered_map> <unordered_set> N4284 Contiguous Iterators 23.2, 24.2 none N4510 Minimal incomplete type support for standard containers 23.3 __cpp_lib_incomplete_container_elements 201505 headers N4279 Improved insertion interface for unique-key maps 23.4 __cpp_lib_map_try_emplace 201411 <map> 23.5 __cpp_lib_unordered_map_try_emplace 201411 <unordered_map> N4280 Non-member size() and more 24.3 __cpp_lib_nonmember_container_access 201411 <iterator> <array> <deque> <forward_list> <list> <map> <regex> <set> <string> <unordered_map> <unordered_set> <vector> N4508 A proposal to add shared_mutex (untimed) 30.4 __cpp_lib_shared_mutex 201505 <shared_mutex> P0156R0 Variadic lock_guard 30.4 __cpp_lib_lock_guard_variadic 201510 <thread> P0004R1 Remove Deprecated iostreams aliases D none
댓글 0