https://gcc.gnu.org/g:57ede05c6a0b443943e312bf205cb79233c9396f commit 57ede05c6a0b443943e312bf205cb79233c9396f Author: Jonathan Wakely Date: Tue Apr 21 22:18:51 2020 +0100 libstdc++: Improve C++14 and C++17 status docs This adds a full table of contents for the C++14 and C++17 standards, with status for each part. For C++14 the list of proposals is removed, as it adds little value now that everything is supported. For C++17 the table of proposals is retained, because it documents he feature test macros for the features. * doc/Makefile.am (xml_sources_manual): Add missing XML files. * doc/Makefile.in: Regenerate. * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead of "this page". * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections to the C++11 status table. * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature proposals with table matching contents of the C++14 standard. * doc/xml/manual/status_cxx2017.xml: Add table matching contents of the C++17 standard. * doc/html/*: Regenerate. Diff: --- libstdc++-v3/ChangeLog | 12 + libstdc++-v3/doc/Makefile.am | 2 + libstdc++-v3/doc/Makefile.in | 2 + libstdc++-v3/doc/html/manual/index.html | 2 +- libstdc++-v3/doc/html/manual/status.html | 246 ++-- libstdc++-v3/doc/xml/manual/status_cxx1998.xml | 8 +- libstdc++-v3/doc/xml/manual/status_cxx2011.xml | 61 +- libstdc++-v3/doc/xml/manual/status_cxx2014.xml | 1570 ++++++++++++++++++-- libstdc++-v3/doc/xml/manual/status_cxx2017.xml | 1867 +++++++++++++++++++++++- 9 files changed, 3507 insertions(+), 263 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 80c14a7f45b..4e0a02fef2d 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,17 @@ 2020-04-21 Jonathan Wakely + * doc/Makefile.am (xml_sources_manual): Add missing XML files. + * doc/Makefile.in: Regenerate. + * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead + of "this page". + * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections + to the C++11 status table. + * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature + proposals with table matching contents of the C++14 standard. + * doc/xml/manual/status_cxx2017.xml: Add table matching contents of + the C++17 standard. + * doc/html/*: Regenerate. + PR c++/94149 * include/std/type_traits (__is_nt_constructible_impl): Add partial specializations for bounded arrays with non-empty initializers. diff --git a/libstdc++-v3/doc/Makefile.am b/libstdc++-v3/doc/Makefile.am index 32417d8ee2d..33386db52af 100644 --- a/libstdc++-v3/doc/Makefile.am +++ b/libstdc++-v3/doc/Makefile.am @@ -341,6 +341,8 @@ xml_sources_manual = \ ${xml_dir}/manual/status_cxx1998.xml \ ${xml_dir}/manual/status_cxx2011.xml \ ${xml_dir}/manual/status_cxx2014.xml \ + ${xml_dir}/manual/status_cxx2017.xml \ + ${xml_dir}/manual/status_cxx2020.xml \ ${xml_dir}/manual/status_cxxtr1.xml \ ${xml_dir}/manual/status_cxxtr24733.xml \ ${xml_dir}/manual/strings.xml \ diff --git a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in index 9134d6633f5..34fec57b5af 100644 --- a/libstdc++-v3/doc/Makefile.in +++ b/libstdc++-v3/doc/Makefile.in @@ -483,6 +483,8 @@ xml_sources_manual = \ ${xml_dir}/manual/status_cxx1998.xml \ ${xml_dir}/manual/status_cxx2011.xml \ ${xml_dir}/manual/status_cxx2014.xml \ + ${xml_dir}/manual/status_cxx2017.xml \ + ${xml_dir}/manual/status_cxx2020.xml \ ${xml_dir}/manual/status_cxxtr1.xml \ ${xml_dir}/manual/status_cxxtr24733.xml \ ${xml_dir}/manual/strings.xml \ diff --git a/libstdc++-v3/doc/html/manual/index.html b/libstdc++-v3/doc/html/manual/index.html index 03444525cde..74bfb5da4b7 100644 --- a/libstdc++-v3/doc/html/manual/index.html +++ b/libstdc++-v3/doc/html/manual/index.html @@ -149,7 +149,7 @@ Support for C++11 dialect.
21.10. Non-unique Mapping Containers
21.11. Point Iterator Hierarchy
21.12. Invalidation Guarantee Tags Hierarchy
21.13. Container Tag Hierarchy
21.14. Hash functions, ranged-hash functions, and range-hashing functions
21.15. Insert hash sequence diagram
21.16. Insert hash sequence diagram with a null policy
21.17. Hash policy class diagram
21.18. Balls and bins
21.19. Insert resize sequence diagram
21.20. Standard resize policy trigger sequence diagram
21.21. Standard resize policy size sequence - diagram
21.22. Tree node invariants
21.23. Tree node invalidation
21.24. A tree and its update policy
21.25. Restoring node invariants
21.26. Insert update sequence
21.27. Useless update path
21.28. A PATRICIA trie
21.29. A trie and its update policy
21.30. A simple list
21.31. The counter algorithm
21.32. Underlying Priority-Queue Data-Structures.
21.33. Priority-Queue Data-Structure Tags.
B.1. Configure and Build File Dependencies

Chapter 1. Status

Implementation Status

C++ 1998/2003

Implementation Status

This status table is based on the table of contents of ISO/IEC 14882:2003.

-This page describes the C++ support in mainline GCC, not in any +This section describes the C++ support in mainline GCC, not in any particular release.

Table 1.1. C++ 1998/2003 Implementation Status

SectionDescriptionStatusComments
18 @@ -155,30 +155,30 @@ options. The pre-defined symbol __cplusplus is used to check for the presence of the required flag.

-This page describes the C++11 support in mainline GCC, not in any +This status table is based on the table of contents of ISO/IEC 14882:2011. +

+This section describes the C++11 support in mainline GCC, not in any particular release.

Table 1.2. C++ 2011 Implementation Status

SectionDescriptionStatusComments
18 Language support -
18.1GeneralY 
18.2TypesY 
18.3Implementation properties  
18.3.2Numeric Limits  
18.3.2.3Class template numeric_limitsY 
18.3.2.4numeric_limits membersY 
18.3.2.5float_round_styleN 
18.3.2.6float_denorm_styleN 
18.3.2.7numeric_limits specializationsY 
18.3.3C LibraryY 
18.4Integer types  
18.4.1Header <cstdint> synopsisY 
18.5Start and terminationPartialC library dependency for quick_exit, at_quick_exit
18.6Dynamic memory managementY 
18.7Type identification  
18.7.1Class type_infoY 
18.7.2Class bad_castY 
18.7.3Class bad_typeidY 
18.8Exception handling  
18.8.1Class exceptionY 
18.8.2Class bad_exceptionY 
18.8.3Abnormal terminationY 
18.8.4uncaught_exceptionY 
18.8.5Exception PropagationY 
18.8.6nested_exceptionY 
18.9Initializer lists  
18.9.1Initializer list constructorsY 
18.9.2Initializer list accessY 
18.9.3Initializer list range accessY 
18.10Other runtime supportY 
+
18.1General  
18.2TypesY 
18.3Implementation properties  
18.3.2Numeric Limits  
18.3.2.3Class template numeric_limitsY 
18.3.2.4numeric_limits membersY 
18.3.2.5float_round_styleN 
18.3.2.6float_denorm_styleN 
18.3.2.7numeric_limits specializationsY 
18.3.3C LibraryY 
18.4Integer types  
18.4.1Header <cstdint> synopsisY 
18.5Start and terminationPartialC library dependency for quick_exit, at_quick_exit
18.6Dynamic memory managementY 
18.7Type identification  
18.7.1Class type_infoY 
18.7.2Class bad_castY 
18.7.3Class bad_typeidY 
18.8Exception handling  
18.8.1Class exceptionY 
18.8.2Class bad_exceptionY 
18.8.3Abnormal terminationY 
18.8.4uncaught_exceptionY 
18.8.5Exception PropagationY 
18.8.6nested_exceptionY 
18.9Initializer lists  
18.9.1Initializer list constructorsY 
18.9.2Initializer list accessY 
18.9.3Initializer list range accessY 
18.10Other runtime supportY 
19 Diagnostics -
19.1GeneralY 
19.2Exception classesY 
19.3AssertionsY 
19.4Error numbersY 
19.5System error support  
19.5.1Class error_categoryY 
19.5.2Class error_codeY 
19.5.3Class error_conditionY 
19.5.4Comparison operatorsY 
19.5.5Class system_errorY 
+
19.1General  
19.2Exception classesY 
19.3AssertionsY 
19.4Error numbersY 
19.5System error support  
19.5.1Class error_categoryY 
19.5.2Class error_codeY 
19.5.3Class error_conditionY 
19.5.4Comparison operatorsY 
19.5.5Class system_errorY 
20 General utilities -
20.1General  
20.2Utility components  
20.2.1OperatorsY 
20.2.2SwapY 
20.2.3forward and move helpersY 
20.2.4Function template declvalY 
20.3Pairs  
20.3.1In general  
20.3.2Class template pairY 
20.3.3Specialized algorithmsY 
20.3.4Tuple-like access to pairY 
20.3.5Piecewise constructionY 
20.4Tuples  
20.4.1In general  
20.4.2Class template tuple  
20.4.2.1ConstructionY 
20.4.2.2AssignmentY 
20.4.2.3SwapY 
20.4.2.4Tuple creation functionsY 
20.4.2.5Tuple helper classesY 
20.4.2.6Element accessY 
20.4.2.7Relational operatorsY 
20.4.2.8Tuple traitsY 
20.4.2.9Tuple specialized algorithmsY 
20.5Class template bitsetY 
20.5.1bitset constructorsY 
20.5.2bitset membersY 
20.5.3bitset hash supportY 
20.5.4bitset operatorsY 
20.6Memory  
20.6.1In general  
20.6.2Header <memory> synopsis  
20.6.3Pointer traitsY 
20.6.4Pointer safetyY 
20.6.5AlignY 
20.6.6Allocator argument tagY 
20.6.7uses_allocatorY 
20.6.8Allocator traitsY 
20.6.9The default allocatorY 
20.6.10Raw storage iteratorY 
20.6.11Temporary buffersY 
20.6.12Specialized algorithms  
20.6.12.1addressofY 
20.6.12.2uninitialized_copyY 
20.6.12.3uninitialized_fillY 
20.6.12.4uninitialized_fill_nY 
20.6.13C libraryY 
20.7Smart pointers  
20.7.1Class template unique_ptrY 
20.7.2Shared-ownership pointersY 
20.7.2.1Class bad_weak_ptrY 
20.7.2.2Class template shared_ptrY +
20.1General  
20.2Utility components  
20.2.1OperatorsY 
20.2.2swapY 
20.2.3forward/move helpersY 
20.2.4Function template declvalY 
20.3Pairs  
20.3.1In general  
20.3.2Class template pairY 
20.3.3Specialized algorithmsY 
20.3.4Tuple-like access to pairY 
20.3.5Piecewise constructionY 
20.4Tuples  
20.4.1In general  
20.4.2Class template tuple  
20.4.2.1ConstructionY 
20.4.2.2AssignmentY 
20.4.2.3SwapY 
20.4.2.4Tuple creation functionsY 
20.4.2.5Tuple helper classesY 
20.4.2.6Element accessY 
20.4.2.7Relational operatorsY 
20.4.2.8Tuple traitsY 
20.4.2.9Tuple specialized algorithmsY 
20.5Class template bitsetY 
20.5.1bitset constructorsY 
20.5.2bitset membersY 
20.5.3bitset hash supportY 
20.5.4bitset operatorsY 
20.6Memory  
20.6.1In general  
20.6.2Header <memory> synopsis  
20.6.3Pointer traitsY 
20.6.4Pointer safetyY 
20.6.5AlignY 
20.6.6Allocator argument tagY 
20.6.7uses_allocatorY 
20.6.8Allocator traitsY 
20.6.9The default allocatorY 
20.6.10Raw storage iteratorY 
20.6.11Temporary buffersY 
20.6.12Specialized algorithms  
20.6.12.1addressofY 
20.6.12.2uninitialized_copyY 
20.6.12.3uninitialized_fillY 
20.6.12.4uninitialized_fill_nY 
20.6.13C libraryY 
20.7Smart pointers  
20.7.1Class template unique_ptrY 
20.7.2Shared-ownership pointers  
20.7.2.1Class bad_weak_ptrY 
20.7.2.2Class template shared_ptrY Uses code from boost::shared_ptr. -
20.7.2.3Class template weak_ptrY 
20.7.2.4Class template emable_shared_from_thisY 
20.7.2.5shared_ptr atomic accessY 
20.7.2.6Smart pointer hash supportY 
20.8Function objects  
20.8.1Definitions  
20.8.2Requirements  
20.8.3Class template reference_wrapperY 
20.8.4Arithmetic operationY 
20.8.5ComparisonsY 
20.8.6Logical operationsY 
20.8.7Bitwise operationsY 
20.8.8NegatorsY 
20.8.9Function template bindY 
20.8.10Function template mem_fnY 
20.8.11Polymorphic function wrappers  
20.8.11.1Class bad_function_callY 
20.8.11.2Class template functionPartialMissing allocator support
20.8.12Class template hashY 
20.9Metaprogramming and type traits  
20.9.1RequirementsY 
20.9.2Header <type_traits> synopsis  
20.9.3Helper classesY 
20.9.4Unary Type TraitsY 
20.9.4.1Primary type categoriesY 
20.9.4.2Composite type traitsY 
20.9.4.3Type propertiesY 
20.9.5Type property queriesY 
20.9.6Relationships between typesY 
20.9.7Transformations between types  
20.9.7.1Const-volatile modificationsY 
20.9.7.2Reference modificationsY 
20.9.7.3Sign modificationsY 
20.9.7.4Array modificationsY 
20.9.7.5Pointer modificationsY 
20.9.7.6Other transformationsY 
20.10Compile-time rational arithmetic  
20.10.1In general  
20.10.2Header <ratio> synopsis  
20.10.3Class template ratioY 
20.10.4Arithmetic on ratiosY 
20.10.5Comparison of ratiosY 
20.10.6SI types for ratioY 
20.11Time utilities  
20.11.3Clock requirementsY 
20.11.4Time-related traits  
20.11.4.1treat_as_floating_pointY 
20.11.4.2duration_valuesY 
20.11.4.3Specializations of common_typeY 
20.11.5Class template durationY 
20.11.6Class template time_pointY 
20.11.7Clocks  
20.11.7.1Class system_clockY 
20.11.7.2Class steady_clockY 
20.11.7.3Class high_resolution_clockY 
20.11.8Date and time functionsY 
20.12Scoped allocator adaptorY 
20.12.1Header <scoped_allocator> synopsis  
20.12.2Scoped allocator adaptor member typesY 
20.12.3Scoped allocator adaptor constructorsY 
20.12.4Scoped allocator adaptor membersY 
20.12.5Scoped allocator operatorsY 
20.13Class type_indexY 
+
20.7.2.3Class template weak_ptrY 
20.7.2.4Class template enable_shared_from_thisY 
20.7.2.5shared_ptr atomic accessY 
20.7.2.6Smart pointer hash supportY 
20.8Function objects  
20.8.1Definitions  
20.8.2Requirements  
20.8.3Class template reference_wrapperY 
20.8.4Arithmetic operationY 
20.8.5ComparisonsY 
20.8.6Logical operationsY 
20.8.7Bitwise operationsY 
20.8.8NegatorsY 
20.8.9Function template bindY 
20.8.10Function template mem_fnY 
20.8.11Polymorphic function wrappers  
20.8.11.1Class bad_function_callY 
20.8.11.2Class template functionPartialMissing allocator support
20.8.12Class template hashY 
20.9Metaprogramming and type traits  
20.9.1RequirementsY 
20.9.2Header <type_traits> synopsis  
20.9.3Helper classesY 
20.9.4Unary Type TraitsY 
20.9.4.1Primary type categoriesY 
20.9.4.2Composite type traitsY 
20.9.4.3Type propertiesY 
20.9.5Type property queriesY 
20.9.6Relationships between typesY 
20.9.7Transformations between types  
20.9.7.1Const-volatile modificationsY 
20.9.7.2Reference modificationsY 
20.9.7.3Sign modificationsY 
20.9.7.4Array modificationsY 
20.9.7.5Pointer modificationsY 
20.9.7.6Other transformationsY 
20.10Compile-time rational arithmetic  
20.10.1In general  
20.10.2Header <ratio> synopsis  
20.10.3Class template ratioY 
20.10.4Arithmetic on ratiosY 
20.10.5Comparison of ratiosY 
20.10.6SI types for ratioY 
20.11Time utilities  
20.11.3Clock requirementsY 
20.11.4Time-related traits  
20.11.4.1treat_as_floating_pointY 
20.11.4.2duration_valuesY 
20.11.4.3Specializations of common_typeY 
20.11.5Class template durationY 
20.11.6Class template time_pointY 
20.11.7Clocks  
20.11.7.1Class system_clockY 
20.11.7.2Class steady_clockY 
20.11.7.3Class high_resolution_clockY 
20.11.8Date and time functionsY 
20.12Scoped allocator adaptorY 
20.12.1Header <scoped_allocator> synopsis  
20.12.2Scoped allocator adaptor member typesY 
20.12.3Scoped allocator adaptor constructorsY 
20.12.4Scoped allocator adaptor membersY 
20.12.5Scoped allocator operatorsY 
20.13Class type_indexY 
21 Strings -
21.1GeneralY 
21.2Character traits  
21.2.1Character traits requirementsY 
21.2.2traits typedefsY 
21.2.3char_traits specializations  
21.2.3.1struct char_traits<char>Y 
21.2.3.2struct char_traits<char16_t>Y 
21.2.3.3struct char_traits<char32_t>Y 
21.2.3.4struct char_traits<wchar_t>Y 
21.3String classesY 
21.4Class template basic_stringY 
21.5Numeric ConversionsY 
21.6Hash supportY 
21.7Null-terminated sequence utilitiesPartialC library dependency. - Missing <cuchar> -
+
21.1GeneralY 
21.2Character traits  
21.2.1Character traits requirementsY 
21.2.2traits typedefsY 
21.2.3char_traits specializations  
21.2.3.1struct char_traits<char>Y 
21.2.3.2struct char_traits<char16_t>Y 
21.2.3.3struct char_traits<char32_t>Y 
21.2.3.4struct char_traits<wchar_t>Y 
21.3String classesY 
21.4Class template basic_stringY 
21.5Numeric ConversionsY 
21.6Hash supportY 
21.7Null-terminated sequence utilitiesPartialC library dependency.
22 Localization @@ -198,7 +198,7 @@ particular release. 26 Numerics -
26.1GeneralY 
26.2Numeric type requirementsY 
26.3The floating-point environmentY 
26.4Complex numbersY 
26.5Random number generation  
26.5.1Requirements  
26.5.2Header <random> synopsis  
26.5.3Random number engine class templates  
26.5.3.1Class template linear_congruential_engineY 
26.5.3.2Class template mersenne_twister_engineY 
26.5.3.3Class template subtract_with_carry_engineY 
26.5.4Random number engine adaptor class templates  
26.5.4.2Class template discard_block_engineY 
26.5.4.3Class template independent_bits_engineY 
26.5.4.4Class template shuffle_order_engineY 
26.5.5Engines and engine adaptors with predefined parametersY 
26.5.6Class random_deviceY 
26.5.7Utilities  
26.5.7.1Class seed_seqY 
26.5.7.2Function template generate_canonicalY 
26.5.8Random number distribution class templates  
26.5.8.2Uniform distributions  
26.5.8.2.1Class template uniform_int_distributionY 
26.5.8.2.2Class template uniform_real_distributionY 
26.5.8.3Bernoulli distributions  
26.5.8.3.1Class bernoulli_distributionY 
26.5.8.3.2Class template binomial_distributionY 
26.5.8.3.3Class template geometric_distributionY 
26.5.8.3.4Class template negative_binomial_distributionY 
26.5.8.4Poisson distributions  
26.5.8.4.1Class template poisson_distributionY 
26.5.8.4.2Class template exponential_distributionY 
26.5.8.4.3Class template gamma_distributionY 
26.5.8.4.4Class template weibull_distributionY 
26.5.8.4.5Class template extreme_value_distributionY 
26.5.8.5Normal distributions  
26.5.8.5.1Class template normal_distributionY 
26.5.8.5.2Class template lognormal_distributionY 
26.5.8.5.3Class template chi_squared_distributionY 
26.5.8.5.4Class template cauchy_distributionY 
26.5.8.5.5Class template fisher_f_distributionY 
26.5.8.5.6Class template student_t_distributionY 
26.5.8.6Sampling distributions  
26.5.8.6.1Class template discrete_distributionY 
26.5.8.6.2Class template piecewise_constant_distributionY 
26.5.8.6.3Class template piecewise_linear_distributionY 
26.6Numeric arrays  
26.6.1Header <valarray> synopsisY 
26.6.2Class template valarrayY 
26.6.3valarray non-member operationsY 
26.6.4Class sliceY 
26.6.5Class template slice_arrayY 
26.6.6The gslice classY 
26.6.7Class template gslice_arrayY 
26.6.8Class template mask_arrayY 
26.6.9Class template indirect_arrayY 
26.6.10valarray range accessY 
26.7Generalized numeric operations  
26.7.1Header <numeric> synopsisY 
26.7.2accumulateY 
26.7.3inner_productY 
26.7.4partial_sumY 
26.7.5adjacent_differenceY 
26.7.6iotaY 
26.8C LibraryY 
+
26.1General  
26.2Numeric type requirementsY 
26.3The floating-point environmentY 
26.4Complex numbersY 
26.5Random number generation  
26.5.1Requirements  
26.5.2Header <random> synopsis  
26.5.3Random number engine class templates  
26.5.3.1Class template linear_congruential_engineY 
26.5.3.2Class template mersenne_twister_engineY 
26.5.3.3Class template subtract_with_carry_engineY 
26.5.4Random number engine adaptor class templates  
26.5.4.2Class template discard_block_engineY 
26.5.4.3Class template independent_bits_engineY 
26.5.4.4Class template shuffle_order_engineY 
26.5.5Engines and engine adaptors with predefined parametersY 
26.5.6Class random_deviceY 
26.5.7Utilities  
26.5.7.1Class seed_seqY 
26.5.7.2Function template generate_canonicalY 
26.5.8Random number distribution class templates  
26.5.8.2Uniform distributions  
26.5.8.2.1Class template uniform_int_distributionY 
26.5.8.2.2Class template uniform_real_distributionY 
26.5.8.3Bernoulli distributions  
26.5.8.3.1Class bernoulli_distributionY 
26.5.8.3.2Class template binomial_distributionY 
26.5.8.3.3Class template geometric_distributionY 
26.5.8.3.4Class template negative_binomial_distributionY 
26.5.8.4Poisson distributions  
26.5.8.4.1Class template poisson_distributionY 
26.5.8.4.2Class template exponential_distributionY 
26.5.8.4.3Class template gamma_distributionY 
26.5.8.4.4Class template weibull_distributionY 
26.5.8.4.5Class template extreme_value_distributionY 
26.5.8.5Normal distributions  
26.5.8.5.1Class template normal_distributionY 
26.5.8.5.2Class template lognormal_distributionY 
26.5.8.5.3Class template chi_squared_distributionY 
26.5.8.5.4Class template cauchy_distributionY 
26.5.8.5.5Class template fisher_f_distributionY 
26.5.8.5.6Class template student_t_distributionY 
26.5.8.6Sampling distributions  
26.5.8.6.1Class template discrete_distributionY 
26.5.8.6.2Class template piecewise_constant_distributionY 
26.5.8.6.3Class template piecewise_linear_distributionY 
26.6Numeric arrays  
26.6.1Header <valarray> synopsisY 
26.6.2Class template valarrayY 
26.6.3valarray non-member operationsY 
26.6.4Class sliceY 
26.6.5Class template slice_arrayY 
26.6.6The gslice classY 
26.6.7Class template gslice_arrayY 
26.6.8Class template mask_arrayY 
26.6.9Class template indirect_arrayY 
26.6.10valarray range accessY 
26.7Generalized numeric operations  
26.7.1Header <numeric> synopsisY 
26.7.2Accumulate>Y 
26.7.3Inner productY 
26.7.4Partial sumY 
26.7.5Adjacent differenceY 
26.7.6IotaY 
26.8C LibraryY 
27 Input/output library @@ -210,15 +210,17 @@ particular release. 29 Atomic operations -
29.1GeneralY 
29.2Header <atomic> synopsisY 
29.3Order and consistencyPartial 
29.4Lock-free propertyY 
29.5Atomic typesY 
29.6Operations on atomic typesY 
29.7Flag Type and operationsY 
29.8FencesY 
+
29.1GeneralY 
29.2Header <atomic> synopsisY 
29.3Order and consistencyY 
29.4Lock-free propertyY 
29.5Atomic typesY 
29.6Operations on atomic typesY 
29.7Flag Type and operationsY 
29.8FencesY 
30 Thread support -
30.1GeneralY 
30.2RequirementsY 
30.3Threads  
30.3.1Class threadPartialthread::id comparisons not well-defined
30.3.2Namespace this_threadY 
30.4Mutual exclusion  
30.4.1Mutex requirements  
30.4.1.1In general  
30.4.1.2Mutex types  
30.4.1.2.1Class mutexY 
30.4.1.2.2Class recursive_mutexY 
30.4.1.3Timed mutex types  
30.4.1.3.1Class timed_mutexY 
30.4.1.3.2Class recursive_timed_mutexY 
30.4.2Locks  
30.4.2.1Class template lock_guardY 
30.4.2.2Class template unique_lockY 
30.4.3Generic locking algorithmsY 
30.4.4Call once  
30.4.4.1Struct once_flagY 
30.4.4.2Function call_onceY 
30.5Condition variablesY 
30.5.1Class condition_variableY 
30.5.2Class condition_variable_anyY 
30.6Futures  
30.6.1Overview  
30.6.2Error handlingY 
30.6.3Class future_errorY 
30.6.4Shared stateY 
30.6.5Class template promiseY 
30.6.6Class template futureY 
30.6.7Class template shared_futureY 
30.6.8Function template asyncY 
30.6.9Class template packaged_taskY 
+
30.1GeneralY 
30.2RequirementsY 
30.3Threads  
30.3.1Class threadPartialthread::id comparisons not well-defined
30.3.2Namespace this_threadY 
30.4Mutual exclusion  
30.4.1Mutex requirements  
30.4.1.1In general  
30.4.1.2Mutex types  
30.4.1.2.1Class mutexY 
30.4.1.2.2Class recursive_mutexY 
30.4.1.3Timed mutex types  
30.4.1.3.1Class timed_mutexY 
30.4.1.3.2Class recursive_timed_mutexY 
30.4.2Locks  
30.4.2.1Class template lock_guardY 
30.4.2.2Class template unique_lockY 
30.4.3Generic locking algorithmsY 
30.4.4Call once  
30.4.4.1Struct once_flagY 
30.4.4.2Function call_onceBrokenSee PR + 66146 +
30.5Condition variablesY 
30.5.1Class condition_variableY 
30.5.2Class condition_variable_anyY 
30.6Futures  
30.6.1Overview  
30.6.2Error handlingY 
30.6.3Class future_errorY 
30.6.4Shared stateY 
30.6.5Class template promiseY 
30.6.6Class template futureY 
30.6.7Class template shared_futureY 
30.6.8Function template asyncY 
30.6.9Class template packaged_taskY 
Appendix D Compatibility features -
D.1Increment operator with bool operand  
D.2register keyword  
D.3Implicit declaration of copy functions  
D.4Dynamic exception specifications  
D.5C standard library headers  
D.6Old iostreams members  
D.7char* streams  
D.8Function objects  
D.9Binders  
D.10auto_ptr  
D.11Violating exception-specifications  

Implementation Specific Behavior

For behaviour which is also specified by the 1998 and 2003 standards, +

D.1Increment operator with bool operand  
D.2register keyword  
D.3Implicit declaration of copy functions  
D.4Dynamic exception specifications  
D.5C standard library headersY 
D.6Old iostreams membersY 
D.7char* streamsY 
D.8Function objectsY 
D.9BindersY 
D.10auto_ptrY 
D.11Violating exception-specificationsY 

Implementation Specific Behavior

For behaviour which is also specified by the 1998 and 2003 standards, see C++ 1998/2003 Implementation Specific Behavior. This section only documents behaviour which is new in the 2011 standard. @@ -407,81 +409,74 @@ options. The pre-defined symbol __cplusplus is used to check for the presence of the required flag.

-This page describes the C++14 and library TS support in mainline GCC, +This status table is based on the table of contents of ISO/IEC 14882:2014. +Some subclauses are not shown in the table where the content is unchanged +since C++11 and the implementation is complete. +

+This section describes the C++14 and library TS support in mainline GCC, not in any particular release. -

Table 1.3. C++ 2014 Implementation Status

PaperTitleStatusComments
- - N3669 - - Fixing constexpr member functions without constY 
- - N3668 - - exchange() utility functionY 
- - N3670 - - Wording for Addressing Tuples by TypeY 
- - N3656 - - make_uniqueY 
- - N3462 - - std::result_of and SFINAEY 
- - N3545 - - An Incremental Improvement to integral_constantY 
- - N3642 - - User-defined Literals for Standard Library TypesY 
- - N3671 - - Making non-modifying sequence operations more robustY 
- - N3654 - - Quoted Strings Library ProposalY 
- - N3469 - - Constexpr Library Additions: chronoY 
- - N3470 - - Constexpr Library Additions: containersY 
- - N3471 - - Constexpr Library Additions: utilitiesY 
- - N3658 - - Compile-time integer sequencesY 
- - N3659 - - Shared Locking in C++Y 
- - N3421 - - Making Operator Functors greater<>Y 
- - N3657 - - Adding heterogeneous comparison lookup to associative containersY 
- - N3655 - - TransformationTraits ReduxY 
- - N3644 - - Null Forward IteratorsPartialOnly affects Debug Mode

Table 1.4. C++ Technical Specifications Implementation Status

PaperTitleStatusComments
+

Table 1.3. C++ 2014 Implementation Status

SectionDescriptionStatusComments
+ 18 + + Language support +
18.1General  
18.2TypesY 
18.3Implementation properties  
18.3.2Numeric Limits  
18.3.2.3Class template numeric_limitsY 
18.3.2.4numeric_limits membersY 
18.3.2.5float_round_styleN 
18.3.2.6float_denorm_styleN 
18.3.2.7numeric_limits specializationsY 
18.3.3C LibraryY 
18.4Integer types  
18.4.1Header <cstdint> synopsisY 
18.5Start and terminationPartialC library dependency for quick_exit, at_quick_exit
18.6Dynamic memory managementY 
18.7Type identification  
18.7.1Class type_infoY 
18.7.2Class bad_castY 
18.7.3Class bad_typeidY 
18.8Exception handling  
18.8.1Class exceptionY 
18.8.2Class bad_exceptionY 
18.8.3Abnormal terminationY 
18.8.4uncaught_exceptionY 
18.8.5Exception PropagationY 
18.8.6nested_exceptionY 
18.9Initializer lists  
18.9.1Initializer list constructorsY 
18.9.2Initializer list accessY 
18.9.3Initializer list range accessY 
18.10Other runtime supportY 
+ 19 + + Diagnostics +
19.1General  
19.2Exception classesY 
19.3AssertionsY 
19.4Error numbersY 
19.5System error support  
19.5.1Class error_categoryY 
19.5.2Class error_codeY 
19.5.3Class error_conditionY 
19.5.4Comparison operatorsY 
19.5.5Class system_errorY 
+ 20 + + General utilities +
20.1General  
20.2Utility components  
20.2.1OperatorsY 
20.2.2swapY 
20.2.3exchangeY 
20.2.4forward/move helpersY 
20.2.5Function template declvalY 
20.3PairsY 
20.4TuplesY 
20.5Compile-time integer sequences  
20.5.2Class template integer_sequenceY 
20.5.3Alias template make_integer_sequenceY 
20.6Class template bitsetY 
20.7MemoryY 
20.8Smart pointers  
20.8.1Class template unique_ptrY 
20.8.1.1Default deletersY 
20.8.1.2unique_ptr for single objectsY 
20.8.1.3unique_ptr for array objects with a runtime lengthY 
20.8.1.4unique_ptr creationY 
20.8.1.5unique_ptr specialized algorithmsY 
20.8.2Shared-ownership pointers  
20.8.2.1Class bad_weak_ptrY 
20.8.2.2Class template shared_ptrY + Uses code from + boost::shared_ptr. +
20.8.2.3Class template weak_ptrY 
20.8.2.4Class template owner_lessY 
20.8.2.5Class template enable_shared_from_thisY 
20.8.2.6shared_ptr atomic accessY 
20.8.2.7Smart pointer hash supportY 
20.9Function objects  
20.9.1Definitions  
20.9.2Requirements  
20.9.3Class template reference_wrapperY 
20.9.4Arithmetic operationY 
20.9.5ComparisonsY 
20.8.6Logical operationsY 
20.9.7Bitwise operationsY 
20.9.8NegatorsY 
20.9.9Function object bindersY 
20.9.10Function template mem_fnY 
20.9.11Polymorphic function wrappers  
20.9.11.1Class bad_function_callY 
20.9.11.2Class template functionPartialMissing allocator support
20.9.12Class template hashY 
20.10Metaprogramming and type traits  
20.10.1RequirementsY 
20.10.2Header <type_traits> synopsis  
20.10.3Helper classesY 
20.10.4Unary Type TraitsY 
20.10.5Type property queriesY 
20.10.6Relationships between typesY 
20.10.7Transformations between typesY 
20.11Compile-time rational arithmeticY 
20.12Time utilities  
20.12.3Clock requirementsY 
20.12.4Time-related traitsY 
20.12.5Class template durationY 
20.12.5.8Suffixes for duration literalsY 
20.12.6Class template time_pointY 
20.12.7ClocksY 
20.12.8Date and time functionsY 
20.13Scoped allocator adaptorY 
20.14Class type_indexY 
+ 21 + + Strings +
21.1GeneralY 
21.2Character traitsY 
21.3String classesY 
21.4Class template basic_stringY 
21.5Numeric ConversionsY 
21.6Hash supportY 
21.7Suffixes for basic_string literalsY 
21.7Null-terminated sequence utilitiesPartialC library dependency.
+ 22 + + Localization +
22.1GeneralY 
22.2Header <locale> synopsisY 
22.3LocalesY 
22.4Standard locale categoriesY 
22.5Standard code conversion facetsY 
22.6C Library LocalesY 
+ 23 + + Containers +
23.1General  
23.2Container requirementsY 
23.3Sequence containersY 
23.4Associative containersY 
23.5Unordered associative containersY 
23.6Container adaptorsY 
+ 24 + + Iterators +
24.1GeneralY 
24.2Iterator requirementsY 
24.3Header <iterator> synopsisY 
24.4Iterator primitivesY 
24.5Iterator adaptorsY 
24.6Stream iteratorsY 
24.7range accessY 
+ 25 + + Algorithms +
25.1General  
25.2Non-modifying sequence operationsY 
25.3Mutating sequence operationsY 
25.4Sorting and related operationsY 
25.5C library algorithmsY 
+ 26 + + Numerics +
26.1General  
26.2Numeric type requirementsY 
26.3The floating-point environmentY 
26.4Complex numbersY 
26.4.10Suffixes for complex number literalsY 
26.5Random number generationY 
26.6Numeric arraysY 
26.7Generalized numeric operationsY 
26.8C LibraryY 
+ 27 + + Input/output library +
27.1GeneralY 
27.2Iostreams requirementsY 
27.2.1Imbue LimitationsY 
27.2.2Positioning Type LimitationsY 
27.2.3Thread safetyPartial 
27.3Forward declarationsY 
27.4Standard iostream objectsY 
27.5Iostreams base classesY 
27.6Stream buffersY 
27.7Formatting and manipulatorsY 
27.7.6Quoted manipulatorsY 
27.8String-based streamsY 
27.9File-based streamsY 
+ 28 + + Regular expressions +
28.1GeneralY 
28.2DefinitionsY 
28.3RequirementsY 
28.4Header <regex> synopsisY 
28.5Namespace std::regex_constantsY 
28.6Class regex_errorY 
28.7Class template regex_traitsPartialtransform_primary is not correctly implemented 
28.8Class template basic_regexY 
28.9Class template sub_matchY 
28.10Class template match_resultsY 
28.11Regular expression algorithmsY 
28.12Regular expression IteratorsY 
28.13Modified ECMAScript regular expression grammarY 
+ 29 + + Atomic operations +
29.1GeneralY 
29.2Header <atomic> synopsisY 
29.3Order and consistencyY 
29.4Lock-free propertyY 
29.5Atomic typesY 
29.6Operations on atomic typesY 
29.7Flag Type and operationsY 
29.8FencesY 
+ 30 + + Thread support +
30.1GeneralY 
30.2RequirementsY 
30.3Threads  
30.3.1Class threadPartialthread::id comparisons not well-defined
30.3.2Namespace this_threadY 
30.4Mutual exclusion  
30.4.1Mutex requirements  
30.4.1.1In general  
30.4.1.2Mutex types  
30.4.1.2.1Class mutexY 
30.4.1.2.2Class recursive_mutexY 
30.4.1.3Timed mutex types  
30.4.1.3.1Class timed_mutexY 
30.4.1.3.2Class recursive_timed_mutexY 
30.4.1.4Shared timed mutex types  
30.4.1.4.1Class shared_timed_mutexY 
30.4.2Locks  
30.4.2.1Class template lock_guardY 
30.4.2.2Class template unique_lockY 
30.4.2.3Class template shared_lockY 
30.4.3Generic locking algorithmsY 
30.4.4Call once  
30.4.4.1Struct once_flagY 
30.4.4.2Function call_onceBrokenSee PR + 66146 +
30.5Condition variablesY 
30.5.1Class condition_variableY 
30.5.2Class condition_variable_anyY 
30.6Futures  
30.6.1Overview  
30.6.2Error handlingY 
30.6.3Class future_errorY 
30.6.4Shared stateY 
30.6.5Class template promiseY 
30.6.6Class template futureY 
30.6.7Class template shared_futureY 
30.6.8Function template asyncY 
30.6.9Class template packaged_taskY 
+ Appendix D + + Compatibility features +
D.1Increment operator with bool operand  
D.2register keyword  
D.3Implicit declaration of copy functions  
D.4Dynamic exception specifications  
D.5C standard library headersY 
D.6Old iostreams membersY 
D.7char* streamsY 
D.8Function objectsY 
D.9BindersY 
D.10auto_ptrY 
D.11Violating exception-specificationsY 
D.12Random shuffleY 

Table 1.4. C++ Technical Specifications Implementation Status

PaperTitleStatusComments
N3662 @@ -553,7 +548,7 @@ this feature (if it has been implemented). The "SD-6 Feature Test" column shows the corresponding macro or header from SD-6: Feature-testing recommendations for C++. -

Table 1.5. C++ 2017 Implementation Status

Library FeatureProposalStatusSD-6 Feature Test
+

Table 1.5. C++ 2017 Library Features

Library FeatureProposalStatusSD-6 Feature Test
constexpr std::hardware_{constructive,destructive}_interference_size @@ -716,7 +711,7 @@ Feature-testing recommendations for C++. P0077R2 - 7.1 __cpp_lib_is_callable >= 201603
has_unique_object_representations + 7.1 __cpp_lib_is_invocable >= 201703
has_unique_object_representations P0258R2 @@ -874,7 +869,70 @@ Note 4: The mathematical special functions are enabled in C++17 mode from GCC 7.1 onwards. For GCC 6.x or for C++11/C++14 define __STDCPP_WANT_MATH_SPEC_FUNCS__ to a non-zero value and test for __STDCPP_MATH_SPEC_FUNCS__ >= 201003L. -

Table 1.6. C++ Technical Specifications Implementation Status

PaperTitleStatusComments
+

+The following status table is based on the table of contents of +ISO/IEC 14882:2017. +Some subclauses are not shown in the table where the content is unchanged +since C++14 and the implementation is complete. +

Table 1.6. C++ 2017 Implementation Status

SectionDescriptionStatusComments
+ 21 + + Language support +
21.1General  
21.2Common definitions  
21.3Implementation properties  
21.3.1General  
21.3.2Header <limits> synopsis  
21.3.3Floating-point type properties  
21.3.3.1float_round_styleN 
21.3.3.2float_denorm_styleN 
21.3.4Class template numeric_limitsY 
21.3.5Header <climits> synopsisY 
21.3.6Header <cfloat> synopsisY 
21.4Integer types  
21.4.1Header <cstdint> synopsisY 
21.5Start and terminationPartialC library dependency for quick_exit, at_quick_exit
21.6Dynamic memory management  
21.6.1Header <new> synopsis  
21.6.2Storage allocation and deallocationY 
21.6.3Storage allocation errorsY 
21.6.4Pointer optimization barrierY 
21.6.5Hardware interference sizeN 
21.7Type identificationY 
21.8Exception handling  
21.8.1Header <exception> synopsis  
21.8.2Class exceptionY 
21.8.3Class bad_exceptionY 
21.8.4Abnormal terminationY 
21.8.5uncaught_exceptionsY 
21.8.6Exception PropagationY 
21.8.7nested_exceptionY 
21.9Initializer listsY 
21.10Other runtime supportY 
+ 22 + + Diagnostics +
22.1General  
22.2Exception classesY 
22.3AssertionsY 
22.4Error numbersY 
22.5System error support  
+ 23 + + General utilities +
23.1General  
23.2Utility components  
23.2.1Header <utility> synopsis  
23.2.2OperatorsY 
23.2.3swapY 
23.2.4exchangeY 
23.2.5Forward/move helpersY 
23.2.6Function template as_constY 
23.2.7Function template declvalY 
23.2.8Primitive numeric output conversionPartialOnly integer types supported, not floating-point types
23.2.9Primitive numeric input conversionPartialOnly integer types supported, not floating-point types
23.3Compile-time integer sequences  
23.4PairsY 
23.5TuplesY 
23.6Optional objectsY 
23.7VariantsY 
23.8Storage for any typeY 
23.9BitsetsY 
23.10MemoryY 
23.10.1In general  
23.10.2Header <memory> synopsisY 
23.10.3Pointer traitsY 
23.10.4Pointer safetyY 
23.10.5AlignY 
23.10.6Allocator argument tagY 
23.10.7uses_allocatorY 
23.10.8Allocator traitsY 
23.10.9The default allocatorY 
23.10.10Specialized algorithmsY 
23.10.11C library memory allocationY 
23.11Smart pointers  
23.11.1Class template unique_ptrY 
23.11.2Shared-ownership pointersY 
23.12Memory resources  
23.12.1Header <memory_resource> synopsisY 
23.12.2Class memory_resourceY 
23.12.3Class template polymorphic_allocatorY 
23.12.4Access to program-wide memory_resource objectsY 
23.12.5Pool resource classesY 
23.12.6Class monotonic_buffer_resourceY 
23.13Class template scoped_allocator_adaptorY 
23.14Function objects  
23.14.1Header <functional> synopsis  
23.14.2Definitions  
23.14.3Requirements  
23.14.4Function template invokeY 
23.14.5Class template reference_wrapperY 
23.14.6Arithmetic operationY 
23.14.7ComparisonsY 
23.14.8Logical operationsY 
23.14.9Bitwise operationsY 
23.14.10Function template not_fnY 
23.14.11Function object bindersY 
23.14.12Function template mem_fnY 
23.14.13Polymorphic function wrappersY 
23.14.14SearchersY 
23.14.15Class template hashY 
23.15Metaprogramming and type traits  
23.15.1Requirements  
23.15.2Header <type_traits> synopsisY 
23.15.3Helper classesY 
23.15.4Unary Type TraitsY 
23.15.5Type property queriesY 
23.15.6Relationships between typesY 
23.15.7Transformations between typesY 
23.15.8Logical operator traitsY 
23.16Compile-time rational arithmeticY 
23.17.1In general  
23.17.2Header <chrono> synopsis  
23.17Time utilities  
23.17.3Clock requirementsY 
23.17.4Time-related traitsY 
23.17.5Class template durationY 
23.17.6Class template time_pointY 
23.17.7ClocksY 
23.17.8Header <ctime> synopsisY 
23.18Class type_indexY 
23.19Execution policies  
23.19.1In general  
23.19.2Header <execution> synopsis  
23.19.3Execution policy type traitY 
23.19.4Sequenced execution policyY 
23.19.5Parallel execution policyY 
23.19.6Parallel and unsequenced execution policyY 
23.19.7Execution policy objectsY 
+ 24 + + Strings +
24.1General  
24.2Character traitsY 
24.3String classesY 
24.4String view classesY 
24.4.1Header <string_view> synopsisY 
24.4.2Class template basic_string_viewY 
24.4.3Non-member comparison functionsY 
24.4.4Inserters and extractorsY 
24.4.5Hash supportY 
24.4.6Suffix for basic_string_view literalsY 
24.5Null-terminated sequence utilitiesPartialC library dependency.
+ 25 + + Localization +
25.1GeneralY 
25.2Header <locale> synopsisY 
25.3LocalesY 
25.4Standard locale categoriesY 
25.5C Library LocalesY 
+ 26 + + Containers +
26.1General  
26.2Container requirementsY 
26.3Sequence containersY 
26.4Associative containersY 
26.5Unordered associative containersY 
26.6Container adaptorsY 
+ 27 + + Iterators +
27.1GeneralY 
27.2Iterator requirementsY 
27.3Header <iterator> synopsisY 
27.4Iterator primitivesY 
27.5Iterator adaptorsY 
27.6Stream iteratorsY 
27.7Range accessY 
27.8Container accessY 
+ 28 + + Algorithms +
28.1General  
28.2Header <algorithm> synopsis  
28.3Algorithms requirements  
28.4Parallel algorithms Using PSTL
28.5Non-modifying sequence operationsY 
28.6Mutating sequence operationsY 
28.7Sorting and related operationsY 
28.8C library algorithmsY 
+ 29 + + Numerics +
29.1General  
29.2Definitions  
29.3Numeric type requirementsY 
29.4The floating-point environmentY 
29.5Complex numbersY 
29.6Random number generationY 
29.7Numeric arraysY 
29.8Generalized numeric operations  
29.8.1Header <numeric> synopsis  
29.8.2AccumulateY 
29.8.3ReduceY 
29.8.4Inner productY 
29.8.5Transform reduceY 
29.8.6Partial sumY 
29.8.7Exclusive scanY 
29.8.8Inclusive scanY 
29.8.9Transform exclusive scanY 
29.8.10Transform inclusive scanY 
29.8.11Adjacent differenceY 
29.8.12IotaY 
29.8.13Greatest common divisorY 
29.8.14Least common multipleY 
29.9Mathematical functions for floating-point types  
29.9.1Header <cmath> synopsis  
29.9.2Absolute valuesY 
29.9.3Three-dimensional hypotenuseY 
29.9.4Classification / comparison functionsY 
29.9.5Mathematical special functionsY 
+ 30 + + Input/output library +
30.1GeneralY 
30.2Iostreams requirementsY 
30.2.1Imbue LimitationsY 
30.2.2Positioning Type LimitationsY 
30.2.3Thread safetyPartial 
30.3Forward declarationsY 
30.4Standard iostream objectsY 
30.5Iostreams base classesY 
30.6Stream buffersY 
30.7Formatting and manipulatorsY 
30.8String-based streamsY 
30.9File-based streamsY 
30.10File systemssY 
30.11C library filesY 
+ 31 + + Regular expressions +
31.1GeneralY 
31.2DefinitionsY 
31.3RequirementsY 
31.4Header <regex> synopsisY 
31.5Namespace std::regex_constantsY 
31.6Class regex_errorY 
31.7Class template regex_traitsPartialtransform_primary is not correctly implemented 
31.8Class template basic_regexY 
31.9Class template sub_matchY 
31.10Class template match_resultsY 
31.11Regular expression algorithmsY 
31.12Regular expression IteratorsY 
31.13Modified ECMAScript regular expression grammarY 
+ 32 + + Atomic operations +
32.1GeneralY 
32.2Header <atomic> synopsisY 
32.3Type aliasesY 
32.4Order and consistencyY 
32.5Lock-free propertyY 
32.6Class template <atomic>Y 
32.7Non-member functionsY 
32.8Flag Type and operationsY 
32.9FencesY 
+ 33 + + Thread support +
33.1GeneralY 
33.2RequirementsY 
33.3Threads  
33.3.1Header thread synopsis  
33.3.2Class threadY 
33.3.2.1Class threadPartialthread::id comparisons not well-defined
33.3.3Namespace this_threadY 
33.4Mutual exclusion  
33.4.3Mutex requirements  
33.4.3.1In general  
33.4.3.2Mutex types  
33.4.3.2.1Class mutexY 
33.4.3.2.2Class recursive_mutexY 
33.4.3.3Timed mutex types  
33.4.3.3.1Class timed_mutexY 
33.4.3.3.2Class recursive_timed_mutexY 
33.4.3.4Shared mutex types  
33.4.3.4.1Class shared_mutexY 
33.4.3.5Shared timed mutex types  
33.4.3.5.1Class shared_timed_mutexY 
33.4.4Locks  
33.4.4.1Class template lock_guardY 
33.4.4.2Class template scoped_guardY 
33.4.4.3Class template unique_lockY 
33.4.4.4Class template shared_lockY 
33.4.5Generic locking algorithmsY 
33.4.6Call once  
33.4.6.1Struct once_flagY 
33.4.6.2Function call_onceBrokenSee PR + 66146 +
33.5Condition variablesY 
33.5.1Class condition_variableY 
33.5.2Class condition_variable_anyY 
33.6Futures  
33.6.1Overview  
33.6.2Header <future>  
33.6.3Error handlingY 
33.6.4Class future_errorY 
33.6.5Shared stateY 
33.6.6Class template promiseY 
33.6.7Class template futureY 
33.6.8Class template shared_futureY 
33.6.9Function template asyncY 
33.6.10Class template packaged_taskY 
+ Appendix D + + Compatibility features +
D.4C++ standard library headersY 
D.4.1Header <ccomplex> synopsisY 
D.4.1Header <cstdalign> synopsisY 
D.4.1Header <cstdbool> synopsisY 
D.4.1Header <ctgmath> synopsisY 
D.5C standard library headersY 
D.6char* streamsY 
D.7uncaught_exceptionY 
D.8Old adaptable function bindingsY 
D.9The default allocatorY 
D.10Raw storage iteratorY 
D.11Temporary buffersY 
D.12Deprecated type traitsY 
D.13Deprecated iterator primitivesY 
D.14Deprecated shared_ptr observersY 
D.15Deprecated standard code conversion facetsY 
D.16Deprecated convenience conversion interfacesY 

Table 1.7. C++ Technical Specifications Implementation Status

PaperTitleStatusComments
N4076 @@ -1045,7 +1103,7 @@ this feature (if it has been implemented). The "SD-6 Feature Test" column shows the corresponding macro or header from SD-6: Feature-testing recommendations for C++. -

Table 1.7. C++ 2020 Implementation Status

Library FeatureProposalStatusSD-6 Feature Test
Endian just Endian +

Table 1.8. C++ 2020 Implementation Status

Library FeatureProposalStatusSD-6 Feature Test
Endian just Endian P0463R1 @@ -1525,7 +1583,7 @@ In this implementation the header names are prefixed by

This page describes the TR1 support in mainline GCC, not in any particular release. -

Table 1.8. C++ TR1 Implementation Status

SectionDescriptionStatusComments
2General Utilities
2.1Reference wrappers  
2.1.1Additions to header <functional> synopsisY 
2.1.2Class template reference_wrapper  
2.1.2.1reference_wrapper construct/copy/destroyY 
2.1.2.2reference_wrapper assignmentY 
2.1.2.3reference_wrapper accessY 
2.1.2.4reference_wrapper invocationY 
2.1.2.5reference_wrapper helper functionsY 
2.2Smart pointers  
2.2.1Additions to header <memory> synopsisY 
2.2.2Class bad_weak_ptrY 
2.2.3Class template shared_ptr  +

Table 1.9. C++ TR1 Implementation Status

SectionDescriptionStatusComments
2General Utilities
2.1Reference wrappers  
2.1.1Additions to header <functional> synopsisY 
2.1.2Class template reference_wrapper  
2.1.2.1reference_wrapper construct/copy/destroyY 
2.1.2.2reference_wrapper assignmentY 
2.1.2.3reference_wrapper accessY 
2.1.2.4reference_wrapper invocationY 
2.1.2.5reference_wrapper helper functionsY 
2.2Smart pointers  
2.2.1Additions to header <memory> synopsisY 
2.2.2Class bad_weak_ptrY 
2.2.3Class template shared_ptr 

Uses code from boost::shared_ptr. @@ -1546,7 +1604,7 @@ decimal floating-point arithmetic

This page describes the TR 24733 support in mainline GCC, not in any particular release. -

Table 1.9. C++ TR 24733 Implementation Status

SectionDescriptionStatusComments
+

Table 1.10. C++ TR 24733 Implementation Status

SectionDescriptionStatusComments
0 Introduction @@ -1586,7 +1644,7 @@ non-strict modes (i.e. -std=gnu++NN modes) the hypergeometric functions and confluent hypergeometric functions from TR1 are also provided, defined in namespace __gnu_cxx. -

Table 1.10. C++ Special Functions Implementation Status

+ +
SectionDescriptionStatusComments
7Macro namesPartialNo diagnostic for inconsistent definitions of +

Table 1.11. C++ Special Functions Implementation Status

SectionDescriptionStatusComments
7Macro namesPartialNo diagnostic for inconsistent definitions of __STDCPP_WANT_MATH_SPEC_FUNCS__
8Mathematical special functionsY 
8.1Additions to header <cmath> synopsisY 
8.1.1associated Laguerre polynomialsY 
8.1.2associated Legendre functionsY 
8.1.3beta functionY 
8.1.4(complete) elliptic integral of the first kindY 
8.1.5(complete) elliptic integral of the second kindY 
8.1.6(complete) elliptic integral of the third kindY 
8.1.7regular modified cylindrical Bessel functionsY 
8.1.8cylindrical Bessel functions (of the first kind)Y 
8.1.9irregular modified cylindrical Bessel functionsY 
8.1.10cylindrical Neumann functionsY 
8.1.11(incomplete) elliptic integral of the first kindY 
8.1.12(incomplete) elliptic integral of the second kindY 
8.1.13(incomplete) elliptic integral of the third kindY 
8.1.14exponential integralY 
8.1.15Hermite polynomialsY 
8.1.16Laguerre polynomialsY 
8.1.17Legendre polynomialsY 
8.1.18Riemann zeta functionY 
8.1.19spherical Bessel functions (of the first kind)Y 
8.1.20spherical associated Legendre functionsY 
8.1.21spherical Neumann functionsY 
8.2Additions to header <math.h>Y 
8.3The header <ctgmath>PartialConflicts with C++ 2011 requirements.
8.4The header <tgmath.h>NConflicts with C++ 2011 requirements.

Implementation Specific Behavior

For behaviour which is specified by the 2011 standard, see C++ 2011 Implementation Specific Behavior. This section documents behaviour which diff --git a/libstdc++-v3/doc/xml/manual/status_cxx1998.xml b/libstdc++-v3/doc/xml/manual/status_cxx1998.xml index cf5722377a6..792272bcf26 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx1998.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx1998.xml @@ -1,4 +1,4 @@ -

@@ -11,14 +11,14 @@
-Implementation Status +Implementation Status This status table is based on the table of contents of ISO/IEC 14882:2003. -This page describes the C++ support in mainline GCC, not in any +This section describes the C++ support in mainline GCC, not in any particular release. @@ -1030,7 +1030,7 @@ particular release.
Implementation Specific Behavior - + The ISO standard defines the following phrase: diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml index 9d2de532f3d..e8f8784c1e9 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml @@ -1,4 +1,4 @@ -
@@ -27,7 +27,11 @@ presence of the required flag. -This page describes the C++11 support in mainline GCC, not in any +This status table is based on the table of contents of ISO/IEC 14882:2011. + + + +This section describes the C++11 support in mainline GCC, not in any particular release. @@ -71,7 +75,7 @@ particular release. 18.1 General - Y + @@ -265,7 +269,7 @@ particular release. 19.1 General - Y + @@ -350,13 +354,13 @@ particular release. 20.2.2 - Swap + swap Y 20.2.3 - forward and move helpers + forward/move helpers Y @@ -627,7 +631,7 @@ particular release. 20.7.2 Shared-ownership pointers - Y + @@ -653,7 +657,7 @@ particular release. 20.7.2.4 - Class template emable_shared_from_this + Class template enable_shared_from_this Y @@ -1115,9 +1119,7 @@ particular release. 21.7 Null-terminated sequence utilities Partial - C library dependency. - Missing <cuchar> - + C library dependency. @@ -1636,7 +1638,7 @@ particular release. 26.1 General - Y + @@ -1989,31 +1991,31 @@ particular release. 26.7.2 - accumulate + Accumulate> Y 26.7.3 - inner_product + Inner product Y 26.7.4 - partial_sum + Partial sum Y 26.7.5 - adjacent_difference + Adjacent difference Y 26.7.6 - iota + Iota Y @@ -2231,10 +2233,9 @@ particular release. - 29.3 Order and consistency - Partial + Y @@ -2397,10 +2398,14 @@ particular release. + 30.4.4.2 Function call_once - Y - + Broken + See PR + 66146 + 30.5 @@ -2515,43 +2520,43 @@ particular release. D.5 C standard library headers - + Y D.6 Old iostreams members - + Y D.7 char* streams - + Y D.8 Function objects - + Y D.9 Binders - + Y D.10 auto_ptr - + Y D.11 Violating exception-specifications - + Y diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2014.xml b/libstdc++-v3/doc/xml/manual/status_cxx2014.xml index a0b900d9a12..0d138abf794 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2014.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2014.xml @@ -1,4 +1,4 @@ -
@@ -20,10 +20,25 @@ presence of the required flag. -This page describes the C++14 and library TS support in mainline GCC, +This status table is based on the table of contents of ISO/IEC 14882:2014. +Some subclauses are not shown in the table where the content is unchanged +since C++11 and the implementation is complete. + + + +This section describes the C++14 and library TS support in mainline GCC, not in any particular release. + + C++ 2014 Implementation Status @@ -32,10 +47,10 @@ not in any particular release. - + - Paper - Title + Section + Description Status Comments @@ -45,210 +60,1501 @@ not in any particular release. - - N3669 - + 18 - Fixing constexpr member functions without const + + Language support + + + + + 18.1 + General + + + + + 18.2 + Types Y + + 18.3 + Implementation properties + + + - - - N3668 - - - exchange() utility function + 18.3.2 + Numeric Limits + + + + + 18.3.2.3 + Class template numeric_limits Y - - - - N3670 - - - Wording for Addressing Tuples by Type + 18.3.2.4 + numeric_limits members Y - - - - N3656 - - - make_unique + + 18.3.2.5 + float_round_style + N + + + + + 18.3.2.6 + float_denorm_style + N + + + + 18.3.2.7 + numeric_limits specializations Y - - - - N3462 - - - std::result_of and SFINAE + 18.3.3 + C Library Y - - - N3545 - - - An Incremental Improvement to integral_constant + 18.4 + Integer types + + + + + 18.4.1 + Header <cstdint> synopsis Y - - - - N3642 - - - User-defined Literals for Standard Library Types + + 18.5 + Start and termination + Partial + C library dependency for quick_exit, at_quick_exit + + + 18.6 + Dynamic memory management Y - - - - N3671 - - - Making non-modifying sequence operations more robust + 18.7 + Type identification + + + + + 18.7.1 + Class type_info Y - - - - N3654 - - - Quoted Strings Library Proposal + 18.7.2 + Class bad_cast Y - - - - - N3469 - - - Constexpr Library Additions: chrono + 18.7.3 + Class bad_typeid Y - - - - N3470 - - - Constexpr Library Additions: containers + 18.8 + Exception handling + + + + + 18.8.1 + Class exception + Y + + + + 18.8.2 + Class bad_exception + Y + + + + 18.8.3 + Abnormal termination + Y + + + + 18.8.4 + uncaught_exception + Y + + + + 18.8.5 + Exception Propagation + Y + + + + 18.8.6 + nested_exception + Y + + + + 18.9 + Initializer lists + + + + + 18.9.1 + Initializer list constructors + Y + + + + 18.9.2 + Initializer list access + Y + + + + 18.9.3 + Initializer list range access + Y + + + + 18.10 + Other runtime support Y - - - N3471 - + 19 + + + Diagnostics - Constexpr Library Additions: utilities + + + 19.1 + General + + + + + 19.2 + Exception classes + Y + + + + 19.3 + Assertions + Y + + + + 19.4 + Error numbers + Y + + + + 19.5 + System error support + + + + + 19.5.1 + Class error_category + Y + + + + 19.5.2 + Class error_code + Y + + + + 19.5.3 + Class error_condition + Y + + + + 19.5.4 + Comparison operators + Y + + + + 19.5.5 + Class system_error Y - - - - N3658 - + 20 + + + General utilities + + + 20.1 + General + + + + + 20.2 + Utility components + + + + + 20.2.1 + Operators + Y + + + + 20.2.2 + swap + Y + + + + 20.2.3 + exchange + Y + + + + 20.2.4 + forward/move helpers + Y + + + + 20.2.5 + Function template declval + Y + + + + 20.3 + Pairs + Y + + + + 20.4 + Tuples + Y + + + + 20.5 Compile-time integer sequences + + + + + 20.5.2 + Class template integer_sequence Y - - - - N3659 - - - Shared Locking in C++ + 20.5.3 + Alias template make_integer_sequence Y - - - - - N3421 - - - Making Operator Functors greater<> + 20.6 + Class template bitset Y - - - - N3657 - - - Adding heterogeneous comparison lookup to associative containers + 20.7 + Memory Y - - - - N3655 - - - TransformationTraits Redux + 20.8 + Smart pointers + + + + + 20.8.1 + Class template unique_ptr Y - - - - - N3644 - - - Null Forward Iterators - Partial - Only affects Debug Mode + 20.8.1.1 + Default deleters + Y + - - - -
- + + 20.8.1.2 + unique_ptr for single objects + Y + + + + 20.8.1.3 + unique_ptr for array objects with a runtime length + Y + + + + 20.8.1.4 + unique_ptr creation + Y + + + + 20.8.1.5 + unique_ptr specialized algorithms + Y + + + + 20.8.2 + Shared-ownership pointers + + + + + 20.8.2.1 + Class bad_weak_ptr + Y + + + + 20.8.2.2 + Class template shared_ptr + Y + + Uses code from + boost::shared_ptr. + + + + 20.8.2.3 + Class template weak_ptr + Y + + + + 20.8.2.4 + Class template owner_less + Y + + + + 20.8.2.5 + Class template enable_shared_from_this + Y + + + + 20.8.2.6 + shared_ptr atomic access + Y + + + + 20.8.2.7 + Smart pointer hash support + Y + + + + 20.9 + Function objects + + + + + 20.9.1 + Definitions + + + + + 20.9.2 + Requirements + + + + + 20.9.3 + Class template reference_wrapper + Y + + + + 20.9.4 + Arithmetic operation + Y + + + + 20.9.5 + Comparisons + Y + + + + 20.8.6 + Logical operations + Y + + + + 20.9.7 + Bitwise operations + Y + + + + 20.9.8 + Negators + Y + + + + 20.9.9 + Function object binders + Y + + + + 20.9.10 + Function template mem_fn + Y + + + + 20.9.11 + Polymorphic function wrappers + + + + + 20.9.11.1 + Class bad_function_call + Y + + + + + 20.9.11.2 + Class template function + Partial + Missing allocator support + + + 20.9.12 + Class template hash + Y + + + + 20.10 + Metaprogramming and type traits + + + + + 20.10.1 + Requirements + Y + + + + 20.10.2 + Header <type_traits> synopsis + + + + + 20.10.3 + Helper classes + Y + + + + 20.10.4 + Unary Type Traits + Y + + + + 20.10.5 + Type property queries + Y + + + + 20.10.6 + Relationships between types + Y + + + + 20.10.7 + Transformations between types + Y + + + + 20.11 + Compile-time rational arithmetic + Y + + + + 20.12 + Time utilities + + + + + 20.12.3 + Clock requirements + Y + + + + 20.12.4 + Time-related traits + Y + + + + 20.12.5 + Class template duration + Y + + + + 20.12.5.8 + Suffixes for duration literals + Y + + + + 20.12.6 + Class template time_point + Y + + + + 20.12.7 + Clocks + Y + + + + 20.12.8 + Date and time functions + Y + + + + 20.13 + Scoped allocator adaptor + Y + + + + 20.14 + Class type_index + Y + + + + + 21 + + + Strings + + + + 21.1 + General + Y + + + + 21.2 + Character traits + Y + + + + 21.3 + String classes + Y + + + + 21.4 + Class template basic_string + Y + + + + 21.5 + Numeric Conversions + Y + + + + 21.6 + Hash support + Y + + + + 21.7 + Suffixes for basic_string literals + Y + + + + + 21.7 + Null-terminated sequence utilities + Partial + C library dependency. + + + + 22 + + + Localization + + + + 22.1 + General + Y + + + + 22.2 + Header <locale> synopsis + Y + + + + 22.3 + Locales + Y + + + + 22.4 + Standard locale categories + Y + + + + 22.5 + Standard code conversion facets + Y + + + + 22.6 + C Library Locales + Y + + + + + 23 + + + Containers + + + + 23.1 + General + + + + + 23.2 + Container requirements + Y + + + + 23.3 + Sequence containers + Y + + + + 23.4 + Associative containers + Y + + + + 23.5 + Unordered associative containers + Y + + + + 23.6 + Container adaptors + Y + + + + + 24 + + + Iterators + + + + 24.1 + General + Y + + + + 24.2 + Iterator requirements + Y + + + + 24.3 + Header <iterator> synopsis + Y + + + + 24.4 + Iterator primitives + Y + + + + 24.5 + Iterator adaptors + Y + + + + 24.6 + Stream iterators + Y + + + + 24.7 + range access + Y + + + + + 25 + + + Algorithms + + + + 25.1 + General + + + + + 25.2 + Non-modifying sequence operations + Y + + + + 25.3 + Mutating sequence operations + Y + + + + 25.4 + Sorting and related operations + Y + + + + 25.5 + C library algorithms + Y + + + + + 26 + + + Numerics + + + + 26.1 + General + + + + + 26.2 + Numeric type requirements + Y + + + + 26.3 + The floating-point environment + Y + + + + 26.4 + Complex numbers + Y + + + + 26.4.10 + Suffixes for complex number literals + Y + + + + 26.5 + Random number generation + Y + + + + 26.6 + Numeric arrays + Y + + + + 26.7 + Generalized numeric operations + Y + + + + 26.8 + C Library + Y + + + + + 27 + + + Input/output library + + + + 27.1 + General + Y + + + + 27.2 + Iostreams requirements + Y + + + + 27.2.1 + Imbue Limitations + Y + + + + 27.2.2 + Positioning Type Limitations + Y + + + + + 27.2.3 + Thread safety + Partial + + + + 27.3 + Forward declarations + Y + + + + 27.4 + Standard iostream objects + Y + + + + 27.5 + Iostreams base classes + Y + + + + 27.6 + Stream buffers + Y + + + + 27.7 + Formatting and manipulators + Y + + + + 27.7.6 + Quoted manipulators + Y + + + + 27.8 + String-based streams + Y + + + + 27.9 + File-based streams + Y + + + + + 28 + + + Regular expressions + + + + 28.1 + General + Y + + + + 28.2 + Definitions + Y + + + + 28.3 + Requirements + Y + + + + 28.4 + Header <regex> synopsis + Y + + + + 28.5 + Namespace std::regex_constants + Y + + + + 28.6 + Class regex_error + Y + + + + + 28.7 + Class template regex_traits + Partial + transform_primary is not correctly implemented + + + + 28.8 + Class template basic_regex + Y + + + + 28.9 + Class template sub_match + Y + + + + 28.10 + Class template match_results + Y + + + + 28.11 + Regular expression algorithms + Y + + + + 28.12 + Regular expression Iterators + Y + + + + 28.13 + Modified ECMAScript regular expression grammar + Y + + + + + 29 + + + Atomic operations + + + + 29.1 + General + Y + + + + 29.2 + Header <atomic> synopsis + Y + + + + 29.3 + Order and consistency + Y + + + + 29.4 + Lock-free property + Y + + + + 29.5 + Atomic types + Y + + + + 29.6 + Operations on atomic types + Y + + + + 29.7 + Flag Type and operations + Y + + + + 29.8 + Fences + Y + + + + + 30 + + + Thread support + + + + 30.1 + General + Y + + + + 30.2 + Requirements + Y + + + + 30.3 + Threads + + + + + + 30.3.1 + Class thread + Partial + thread::id comparisons not well-defined + + + 30.3.2 + Namespace this_thread + Y + + + + 30.4 + Mutual exclusion + + + + + 30.4.1 + Mutex requirements + + + + + 30.4.1.1 + In general + + + + + 30.4.1.2 + Mutex types + + + + + 30.4.1.2.1 + Class mutex + Y + + + + 30.4.1.2.2 + Class recursive_mutex + Y + + + + 30.4.1.3 + Timed mutex types + + + + + 30.4.1.3.1 + Class timed_mutex + Y + + + + 30.4.1.3.2 + Class recursive_timed_mutex + Y + + + + 30.4.1.4 + Shared timed mutex types + + + + + 30.4.1.4.1 + Class shared_timed_mutex + Y + + + + 30.4.2 + Locks + + + + + 30.4.2.1 + Class template lock_guard + Y + + + + 30.4.2.2 + Class template unique_lock + Y + + + + 30.4.2.3 + Class template shared_lock + Y + + + + 30.4.3 + Generic locking algorithms + Y + + + + 30.4.4 + Call once + + + + + 30.4.4.1 + Struct once_flag + Y + + + + + 30.4.4.2 + Function call_once + Broken + See PR + 66146 + + + + 30.5 + Condition variables + Y + + + + 30.5.1 + Class condition_variable + Y + + + + 30.5.2 + Class condition_variable_any + Y + + + + 30.6 + Futures + + + + + 30.6.1 + Overview + + + + + 30.6.2 + Error handling + Y + + + + 30.6.3 + Class future_error + Y + + + + 30.6.4 + Shared state + Y + + + + 30.6.5 + Class template promise + Y + + + + 30.6.6 + Class template future + Y + + + + 30.6.7 + Class template shared_future + Y + + + + 30.6.8 + Function template async + Y + + + + 30.6.9 + Class template packaged_task + Y + + + + + Appendix D + + + Compatibility features + + + + D.1 + Increment operator with bool operand + + + + + D.2 + register keyword + + + + + D.3 + Implicit declaration of copy functions + + + + + D.4 + Dynamic exception specifications + + + + + D.5 + C standard library headers + Y + + + + D.6 + Old iostreams members + Y + + + + D.7 + char* streams + Y + + + + D.8 + Function objects + Y + + + + D.9 + Binders + Y + + + + D.10 + auto_ptr + Y + + + + D.11 + Violating exception-specifications + Y + + + + D.12 + Random shuffle + Y + + + +
C++ Technical Specifications Implementation Status diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml index 188c3f88551..0f03126db1c 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml @@ -1,4 +1,4 @@ -
@@ -35,8 +35,8 @@ The "SD-6 Feature Test" column shows the corresponding macro or header from Feature-testing recommendations for C++. -
-C++ 2017 Implementation Status +
+C++ 2017 Library Features @@ -469,7 +469,7 @@ Feature-testing recommendations for C++. 7.1 - __cpp_lib_is_callable >= 201603 + __cpp_lib_is_invocable >= 201703 @@ -854,6 +854,1865 @@ GCC 7.1 onwards. For GCC 6.x or for C++11/C++14 define and test for __STDCPP_MATH_SPEC_FUNCS__ >= 201003L. + + + +The following status table is based on the table of contents of +ISO/IEC 14882:2017. +Some subclauses are not shown in the table where the content is unchanged +since C++14 and the implementation is complete. + + +
+C++ 2017 Implementation Status + + + + + + + + + Section + Description + Status + Comments + + + + + + + + 21 + + + Language support + + + + + 21.1 + General + + + + + 21.2 + Common definitions + + + + + 21.3 + Implementation properties + + + + + 21.3.1 + General + + + + + 21.3.2 + Header <limits> synopsis + + + + + 21.3.3 + Floating-point type properties + + + + + + 21.3.3.1 + float_round_style + N + + + + + 21.3.3.2 + float_denorm_style + N + + + + 21.3.4 + Class template numeric_limits + Y + + + + 21.3.5 + Header <climits> synopsis + Y + + + + 21.3.6 + Header <cfloat> synopsis + Y + + + + 21.4 + Integer types + + + + + 21.4.1 + Header <cstdint> synopsis + Y + + + + + 21.5 + Start and termination + Partial + C library dependency for quick_exit, at_quick_exit + + + 21.6 + Dynamic memory management + + + + + 21.6.1 + Header <new> synopsis + + + + + 21.6.2 + Storage allocation and deallocation + Y + + + + 21.6.3 + Storage allocation errors + Y + + + + 21.6.4 + Pointer optimization barrier + Y + + + + + 21.6.5 + Hardware interference size + N + + + + 21.7 + Type identification + Y + + + + 21.8 + Exception handling + + + + + 21.8.1 + Header <exception> synopsis + + + + + 21.8.2 + Class exception + Y + + + + 21.8.3 + Class bad_exception + Y + + + + 21.8.4 + Abnormal termination + Y + + + + 21.8.5 + uncaught_exceptions + Y + + + + 21.8.6 + Exception Propagation + Y + + + + 21.8.7 + nested_exception + Y + + + + 21.9 + Initializer lists + Y + + + + 21.10 + Other runtime support + Y + + + + + 22 + + + Diagnostics + + + + 22.1 + General + + + + + 22.2 + Exception classes + Y + + + + 22.3 + Assertions + Y + + + + 22.4 + Error numbers + Y + + + + 22.5 + System error support + + + + + + 23 + + + General utilities + + + + 23.1 + General + + + + + 23.2 + Utility components + + + + + 23.2.1 + Header <utility> synopsis + + + + + 23.2.2 + Operators + Y + + + + 23.2.3 + swap + Y + + + + 23.2.4 + exchange + Y + + + + 23.2.5 + Forward/move helpers + Y + + + + 23.2.6 + Function template as_const + Y + + + + 23.2.7 + Function template declval + Y + + + + + 23.2.8 + Primitive numeric output conversion + Partial + Only integer types supported, not floating-point types + + + + 23.2.9 + Primitive numeric input conversion + Partial + Only integer types supported, not floating-point types + + + 23.3 + Compile-time integer sequences + + + + + 23.4 + Pairs + Y + + + + 23.5 + Tuples + Y + + + + 23.6 + Optional objects + Y + + + + 23.7 + Variants + Y + + + + 23.8 + Storage for any type + Y + + + + 23.9 + Bitsets + Y + + + + 23.10 + Memory + Y + + + + 23.10.1 + In general + + + + + 23.10.2 + Header <memory> synopsis + Y + + + + 23.10.3 + Pointer traits + Y + + + + 23.10.4 + Pointer safety + Y + + + + 23.10.5 + Align + Y + + + + 23.10.6 + Allocator argument tag + Y + + + + 23.10.7 + uses_allocator + Y + + + + 23.10.8 + Allocator traits + Y + + + + 23.10.9 + The default allocator + Y + + + + 23.10.10 + Specialized algorithms + Y + + + + 23.10.11 + C library memory allocation + Y + + + + 23.11 + Smart pointers + + + + + 23.11.1 + Class template unique_ptr + Y + + + + 23.11.2 + Shared-ownership pointers + Y + + + + 23.12 + Memory resources + + + + + 23.12.1 + Header <memory_resource> synopsis + Y + + + + 23.12.2 + Class memory_resource + Y + + + + 23.12.3 + Class template polymorphic_allocator + Y + + + + 23.12.4 + Access to program-wide memory_resource objects + Y + + + + 23.12.5 + Pool resource classes + Y + + + + 23.12.6 + Class monotonic_buffer_resource + Y + + + + 23.13 + Class template scoped_allocator_adaptor + Y + + + + 23.14 + Function objects + + + + + 23.14.1 + Header <functional> synopsis + + + + + 23.14.2 + Definitions + + + + + 23.14.3 + Requirements + + + + + 23.14.4 + Function template invoke + Y + + + + 23.14.5 + Class template reference_wrapper + Y + + + + 23.14.6 + Arithmetic operation + Y + + + + 23.14.7 + Comparisons + Y + + + + 23.14.8 + Logical operations + Y + + + + 23.14.9 + Bitwise operations + Y + + + + 23.14.10 + Function template not_fn + Y + + + + 23.14.11 + Function object binders + Y + + + + 23.14.12 + Function template mem_fn + Y + + + + 23.14.13 + Polymorphic function wrappers + Y + + + + 23.14.14 + Searchers + Y + + + + 23.14.15 + Class template hash + Y + + + + 23.15 + Metaprogramming and type traits + + + + + 23.15.1 + Requirements + + + + + 23.15.2 + Header <type_traits> synopsis + Y + + + + 23.15.3 + Helper classes + Y + + + + 23.15.4 + Unary Type Traits + Y + + + + 23.15.5 + Type property queries + Y + + + + 23.15.6 + Relationships between types + Y + + + + 23.15.7 + Transformations between types + Y + + + + 23.15.8 + Logical operator traits + Y + + + + 23.16 + Compile-time rational arithmetic + Y + + + + 23.17.1 + In general + + + + + 23.17.2 + Header <chrono> synopsis + + + + + 23.17 + Time utilities + + + + + 23.17.3 + Clock requirements + Y + + + + 23.17.4 + Time-related traits + Y + + + + 23.17.5 + Class template duration + Y + + + + 23.17.6 + Class template time_point + Y + + + + 23.17.7 + Clocks + Y + + + + 23.17.8 + Header <ctime> synopsis + Y + + + + 23.18 + Class type_index + Y + + + + 23.19 + Execution policies + + + + + 23.19.1 + In general + + + + + 23.19.2 + Header <execution> synopsis + + + + + 23.19.3 + Execution policy type trait + Y + + + + 23.19.4 + Sequenced execution policy + Y + + + + 23.19.5 + Parallel execution policy + Y + + + + 23.19.6 + Parallel and unsequenced execution policy + Y + + + + 23.19.7 + Execution policy objects + Y + + + + + 24 + + + Strings + + + + 24.1 + General + + + + + 24.2 + Character traits + Y + + + + 24.3 + String classes + Y + + + + 24.4 + String view classes + Y + + + + 24.4.1 + Header <string_view> synopsis + Y + + + + 24.4.2 + Class template basic_string_view + Y + + + + 24.4.3 + Non-member comparison functions + Y + + + + 24.4.4 + Inserters and extractors + Y + + + + 24.4.5 + Hash support + Y + + + + 24.4.6 + Suffix for basic_string_view literals + Y + + + + + 24.5 + Null-terminated sequence utilities + Partial + C library dependency. + + + + 25 + + + Localization + + + + 25.1 + General + Y + + + + 25.2 + Header <locale> synopsis + Y + + + + 25.3 + Locales + Y + + + + 25.4 + Standard locale categories + Y + + + + 25.5 + C Library Locales + Y + + + + + 26 + + + Containers + + + + 26.1 + General + + + + + 26.2 + Container requirements + Y + + + + 26.3 + Sequence containers + Y + + + + 26.4 + Associative containers + Y + + + + 26.5 + Unordered associative containers + Y + + + + 26.6 + Container adaptors + Y + + + + + 27 + + + Iterators + + + + 27.1 + General + Y + + + + 27.2 + Iterator requirements + Y + + + + 27.3 + Header <iterator> synopsis + Y + + + + 27.4 + Iterator primitives + Y + + + + 27.5 + Iterator adaptors + Y + + + + 27.6 + Stream iterators + Y + + + + 27.7 + Range access + Y + + + + 27.8 + Container access + Y + + + + + 28 + + + Algorithms + + + + 28.1 + General + + + + + 28.2 + Header <algorithm> synopsis + + + + + 28.3 + Algorithms requirements + + + + + 28.4 + Parallel algorithms + + Using PSTL + + + 28.5 + Non-modifying sequence operations + Y + + + + 28.6 + Mutating sequence operations + Y + + + + 28.7 + Sorting and related operations + Y + + + + 28.8 + C library algorithms + Y + + + + + 29 + + + Numerics + + + + 29.1 + General + + + + + 29.2 + Definitions + + + + + 29.3 + Numeric type requirements + Y + + + + 29.4 + The floating-point environment + Y + + + + 29.5 + Complex numbers + Y + + + + 29.6 + Random number generation + Y + + + + 29.7 + Numeric arrays + Y + + + + 29.8 + Generalized numeric operations + + + + + 29.8.1 + Header <numeric> synopsis + + + + + 29.8.2 + Accumulate + Y + + + + 29.8.3 + Reduce + Y + + + + 29.8.4 + Inner product + Y + + + + 29.8.5 + Transform reduce + Y + + + + 29.8.6 + Partial sum + Y + + + + 29.8.7 + Exclusive scan + Y + + + + 29.8.8 + Inclusive scan + Y + + + + 29.8.9 + Transform exclusive scan + Y + + + + 29.8.10 + Transform inclusive scan + Y + + + + 29.8.11 + Adjacent difference + Y + + + + 29.8.12 + Iota + Y + + + + 29.8.13 + Greatest common divisor + Y + + + + 29.8.14 + Least common multiple + Y + + + + 29.9 + Mathematical functions for floating-point types + + + + + 29.9.1 + Header <cmath> synopsis + + + + + 29.9.2 + Absolute values + Y + + + + 29.9.3 + Three-dimensional hypotenuse + Y + + + + 29.9.4 + Classification / comparison functions + Y + + + + 29.9.5 + Mathematical special functions + Y + + + + + 30 + + + Input/output library + + + + 30.1 + General + Y + + + + 30.2 + Iostreams requirements + Y + + + + 30.2.1 + Imbue Limitations + Y + + + + 30.2.2 + Positioning Type Limitations + Y + + + + + 30.2.3 + Thread safety + Partial + + + + 30.3 + Forward declarations + Y + + + + 30.4 + Standard iostream objects + Y + + + + 30.5 + Iostreams base classes + Y + + + + 30.6 + Stream buffers + Y + + + + 30.7 + Formatting and manipulators + Y + + + + 30.8 + String-based streams + Y + + + + 30.9 + File-based streams + Y + + + + 30.10 + File systemss + Y + + + + 30.11 + C library files + Y + + + + + 31 + + + Regular expressions + + + + 31.1 + General + Y + + + + 31.2 + Definitions + Y + + + + 31.3 + Requirements + Y + + + + 31.4 + Header <regex> synopsis + Y + + + + 31.5 + Namespace std::regex_constants + Y + + + + 31.6 + Class regex_error + Y + + + + + 31.7 + Class template regex_traits + Partial + transform_primary is not correctly implemented + + + + 31.8 + Class template basic_regex + Y + + + + 31.9 + Class template sub_match + Y + + + + 31.10 + Class template match_results + Y + + + + 31.11 + Regular expression algorithms + Y + + + + 31.12 + Regular expression Iterators + Y + + + + 31.13 + Modified ECMAScript regular expression grammar + Y + + + + + 32 + + + Atomic operations + + + + 32.1 + General + Y + + + + 32.2 + Header <atomic> synopsis + Y + + + + 32.3 + Type aliases + Y + + + + 32.4 + Order and consistency + Y + + + + 32.5 + Lock-free property + Y + + + + 32.6 + Class template <atomic> + Y + + + + 32.7 + Non-member functions + Y + + + + 32.8 + Flag Type and operations + Y + + + + 32.9 + Fences + Y + + + + + 33 + + + Thread support + + + + 33.1 + General + Y + + + + 33.2 + Requirements + Y + + + + 33.3 + Threads + + + + + 33.3.1 + Header thread synopsis + + + + + 33.3.2 + Class thread + Y + + + + + 33.3.2.1 + Class thread + Partial + thread::id comparisons not well-defined + + + 33.3.3 + Namespace this_thread + Y + + + + 33.4 + Mutual exclusion + + + + + 33.4.3 + Mutex requirements + + + + + 33.4.3.1 + In general + + + + + 33.4.3.2 + Mutex types + + + + + 33.4.3.2.1 + Class mutex + Y + + + + 33.4.3.2.2 + Class recursive_mutex + Y + + + + 33.4.3.3 + Timed mutex types + + + + + 33.4.3.3.1 + Class timed_mutex + Y + + + + 33.4.3.3.2 + Class recursive_timed_mutex + Y + + + + 33.4.3.4 + Shared mutex types + + + + + 33.4.3.4.1 + Class shared_mutex + Y + + + + 33.4.3.5 + Shared timed mutex types + + + + + 33.4.3.5.1 + Class shared_timed_mutex + Y + + + + 33.4.4 + Locks + + + + + 33.4.4.1 + Class template lock_guard + Y + + + + 33.4.4.2 + Class template scoped_guard + Y + + + + 33.4.4.3 + Class template unique_lock + Y + + + + 33.4.4.4 + Class template shared_lock + Y + + + + 33.4.5 + Generic locking algorithms + Y + + + + 33.4.6 + Call once + + + + + 33.4.6.1 + Struct once_flag + Y + + + + + 33.4.6.2 + Function call_once + Broken + See PR + 66146 + + + + 33.5 + Condition variables + Y + + + + 33.5.1 + Class condition_variable + Y + + + + 33.5.2 + Class condition_variable_any + Y + + + + 33.6 + Futures + + + + + 33.6.1 + Overview + + + + + 33.6.2 + Header <future> + + + + + 33.6.3 + Error handling + Y + + + + 33.6.4 + Class future_error + Y + + + + 33.6.5 + Shared state + Y + + + + 33.6.6 + Class template promise + Y + + + + 33.6.7 + Class template future + Y + + + + 33.6.8 + Class template shared_future + Y + + + + 33.6.9 + Function template async + Y + + + + 33.6.10 + Class template packaged_task + Y + + + + + Appendix D + + + Compatibility features + + + + D.4 + C++ standard library headers + Y + + + + D.4.1 + Header <ccomplex> synopsis + Y + + + + D.4.1 + Header <cstdalign> synopsis + Y + + + + D.4.1 + Header <cstdbool> synopsis + Y + + + + D.4.1 + Header <ctgmath> synopsis + Y + + + + D.5 + C standard library headers + Y + + + + D.6 + char* streams + Y + + + + D.7 + uncaught_exception + Y + + + + D.8 + Old adaptable function bindings + Y + + + + D.9 + The default allocator + Y + + + + D.10 + Raw storage iterator + Y + + + + D.11 + Temporary buffers + Y + + + + D.12 + Deprecated type traits + Y + + + + D.13 + Deprecated iterator primitives + Y + + + + D.14 + Deprecated shared_ptr observers + Y + + + + D.15 + Deprecated standard code conversion facets + Y + + + + D.16 + Deprecated convenience conversion interfaces + Y + + + + + +
+ C++ Technical Specifications Implementation Status