Use extern template to pre-instantiate all required
specializations for certain types defined in the standard libraries.
diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
index d046bd2de47..00a7c2556f3 100644
--- a/libstdc++-v3/doc/html/manual/status.html
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -1325,10 +1325,10 @@ or any notes about the implementation.
9.1 __cpp_lib_type_identity >= 201806L
(since 9.4, see Note 1) unwrap_ref_decay
and unwrap_reference
P0318R1
- 9.1 __cpp_lib_unwrap_ref >= 201811L
(since 9.4, see Note 1) Improving Completeness Requirements for Type Traits
+ 9.1 __cpp_lib_unwrap_ref >= 201811L
(since 9.4, see Note 1) Improving Completeness Requirements for Type Traits
P1285R0
- Partial Missing feature test macros
+ — Most misuses are diagnosed, but not all. Missing feature test macros
P1353R0
9.1 Making std::underlying_type SFINAE-friendly
@@ -1411,15 +1411,15 @@ or any notes about the implementation.
10.1 Ranges Design Cleanup
P1252R2
- 10.1 Avoid template bloat for safe_ranges
in combination with ‘subrange-y’ view adaptors.
+ 10.1 Avoid template bloat for safe_ranges
in combination with ‘subrange-y’ view adaptors.
P1739R4
-
+ 12.1
Time, dates, calendars, time zones
- Extending chrono to Calendars and Time Zones
+ Extending chrono to Calendars and Time Zones
P0355R7
- __cpp_lib_chrono >= 201803L
Miscellaneous minor fixes for chrono
+ 14.1 (see Note 2) __cpp_lib_chrono >= 201803L
Miscellaneous minor fixes for chrono
P1466R3
__cpp_lib_chrono >= 201907L
<chrono>
zero()
, min()
, and max()
should be noexcept
@@ -1449,28 +1449,28 @@ or any notes about the implementation.
9.1 __cpp_lib_char8_t >= 201811L
char8_t
backward compatibility remediation
P1423R3
- 10.1 __cpp_lib_char8_t >= 201907L
Text formatting
+ 10.1 __cpp_lib_char8_t >= 201907L
Text formatting
P0645R10
-
+ 13.1
__cpp_lib_format >= 201907L
- Integration of chrono with text formatting
+ Integration of chrono with text formatting
P1361R2
-
+ 13.1
__cpp_lib_format >= 201907L
- Printf corner cases in std::format
+ Printf corner cases in std::format
P1652R1
-
+ 13.1
__cpp_lib_format >= 201907L
String Prefix and Suffix Checking
P0457R2
- 9.1 __cpp_lib_starts_ends_with >= 201711L
(since 9.4, see Note 1) Update The Reference To The Unicode Standard
+ 9.1 __cpp_lib_starts_ends_with >= 201711L
(since 9.4, see Note 1) Update The Reference To The Unicode Standard
P1025R1
-
+ —
Containers
span: bounds-safe views for sequences of objects
@@ -1492,10 +1492,10 @@ or any notes about the implementation.
10.1 __cpp_lib_to_array >= 201907L
Checking for Existence of an Element in Associative Containers
P0458R2
- 9.1 Comparing Unordered Containers
+ 9.1 Comparing Unordered Containers
P0809R0
- Heterogeneous lookup for unordered containers
+ — Heterogeneous lookup for unordered containers
P0919R3
11.1 __cpp_lib_generic_unordered_lookup >= 201811
Refinement Proposal for P0919
@@ -1570,7 +1570,7 @@ or any notes about the implementation.
9.1 Thou Shalt Not Specialize std Function Templates!
P0551R3
- Bit-casting object representations
+ These changes will not be implemented. Bit-casting object representations
P0476R2
11.1 __cpp_lib_bit_cast >= 201806L
Integral power-of-2 operations
@@ -1591,10 +1591,10 @@ or any notes about the implementation.
— Add shift
to <algorithm>
P0769R2
- 10.1 __cpp_lib_shift >= 201806L
Standard Library Specification in a Concepts and Contracts World
+ 10.1 __cpp_lib_shift >= 201806L
Standard Library Specification in a Concepts and Contracts World
P0788R3
- explicit(bool)
+ — explicit(bool)
P0892R2
— Eradicating unnecessarily explicit default constructors from the standard library
@@ -1630,10 +1630,10 @@ or any notes about the implementation.
7.1 Editorial Guidance for merging P0019r8 and P0528r3
P1123R0
- — Cleaning up Clause 20
+ — Cleaning up Clause 20
P1148R0
- Completing the Rebase of Library Fundamentals, Version 3, Working Draft
+ — Completing the Rebase of Library Fundamentals, Version 3, Working Draft
P1210R0
Alternative Wording for P0907R4 Signed Integers are Two's Complement
@@ -1669,13 +1669,13 @@ or any notes about the implementation.
P1463R1
- 10.1
+ 10.1
Mandating the Standard Library:
Clause 22 - Iterators library
P1464R1
- Make create_directory()
Intuitive
+ — Make create_directory()
Intuitive
P1164R1
@@ -1711,6 +1711,10 @@ or any notes about the implementation.
Note 1: This feature is supported in older releases but the
__cpp_lib
macro is not defined to the right value
(or not defined at all) until the version shown in parentheses.
+
+Note 2: The C++20 calendar types are supported since 11.1,
+time zones and UTC are supported since 13.1,
+and chrono::parse
is supported since 14.1.
In this implementation the -std=gnu++23
or
-std=c++23
flag must be used to enable language
@@ -1780,11 +1784,88 @@ or any notes about the implementation.
P1659R3
-
__cpp_lib_ranges_starts_ends_with >= 202106L
zip
+ __cpp_lib_ranges_starts_ends_with >= 202106L
zip
P2321R2
- __cpp_lib_ranges_zip >= 202110L
+ 13.1 __cpp_lib_ranges_zip >= 202110L
views::repeat
+
+ P2474R2
+
+ 13.1 __cpp_lib_ranges_repeat >= 202207L
views::enumerate
+
+ P2164R9
+
+ 13.1 __cpp_lib_ranges_enumerate >= 202302L
views::join_with
+
+ P2441R2
+
+ 13.1 __cpp_lib_ranges_join_with >= 202202L
+ Windowing range adaptors: views::chunk
+ and views::slide
+
+ P2442R2
+
+ 13.1 __cpp_lib_ranges_slide >= 202202L
views::chunk_by
+
+ P2443R1
+
+ 13.1 __cpp_lib_ranges_chunk_by >= 202202L
views::stride
+
+ P1899R3
+
+ 13.1 __cpp_lib_ranges_stride >= 202207L
views::cartesian_product
+
+ P2374R4
+
+ 13.1 __cpp_lib_ranges_cartesian_product >= 202207L
Empty Product for certain Views
+
+ P2540R1
+
+ 13.1 __cpp_lib_ranges_cartesian_product >= 202207L
views::as_rvalue
+
+ P2446R2
+
+ 13.1 __cpp_lib_ranges_as_rvalue >= 202207L
+ cbegin
should always return a constant iterator
+
+
+ P2278R4
+
+ 13.1 __cpp_lib_ranges_as_const >= 202207L
ranges::to
+
+ P1206R7
+
+ __cpp_lib_ranges_to_container >= 202202L
Pipe support for user-defined range adaptors
+
+ P2387R3
+
+ 13.1
+ __cpp_lib_bind_pack >= 202202L
,
+ __cpp_lib_ranges >= 202202L
+
+ ranges::iota
, ranges::shift_left
,
+ and ranges::shift_right
+
+
+ P2440R1
+
+ 13.1 (ranges::iota
)
+ __cpp_lib_ranges_iota >= 202202L
,
+ __cpp_lib_shift >= 202202L
+ ranges::find_last
+
+ P1223R5
+
+ 13.1 __cpp_lib_ranges_find_last >= 202207L
ranges::contains
+
+ P2302R4
+
+ 13.1 __cpp_lib_ranges_contains >= 202207L
ranges::fold
+
+ P2322R6
+
+ 13.1 __cpp_lib_ranges_fold >= 202207L
Compile-time programming
A proposal for a type trait to detect scoped enumerations
@@ -1818,11 +1899,11 @@ or any notes about the implementation.
P1413R3
- A type trait to detect reference binding to temporary
+ A type trait to detect reference binding to temporary
P2255R2
- __cpp_lib_reference_from_temporary >= 202202L
+ 13.1 (missing changes to std::tuple
__cpp_lib_reference_from_temporary >= 202202L
Strings and text
string contains function
@@ -1854,7 +1935,101 @@ or any notes about the implementation.
P2077R3
- __cpp_lib_associative_heterogeneous_erasure >= 202110L
+ __cpp_lib_associative_heterogeneous_erasure >= 202110L
<flat_map>
+
+ P0429R9
+
+ __cpp_lib_flat_map >= 202207L
<flat_set>
+
+ P1222R4
+
+ __cpp_lib_flat_set >= 202207L
mdspan
+
+ P0009R18
+
+ __cpp_lib_mdspan >= 202207L
+ index_type
& size_type
+ in mdspan
+
+
+ P2599R2
+
+ __cpp_lib_mdspan >= 202207L
+ mdspan
: rename pointer
and
+ contiguous
+
+
+ P2604R0
+
+ __cpp_lib_mdspan >= 202207L
Add the missing empty
to mdspan
+
+ P2613R1
+
+ __cpp_lib_mdspan >= 202207L
+ layout_stride
static extents default constructor fix
+
+
+ P2763R1
+
+
+ Strings and text
+ std::format improvements
+
+ P2216R3
+
+ 13.1 __cpp_lib_format >= 202106L
+ Add support for std::generator
-like types to
+ std::format
+
+
+ P2418R2
+
+ 13.1 __cpp_lib_format >= 202110L
+ Expose std::basic-format-string <charT, Args...>
+
+
+ P2508R1
+
+ 13.1 (feature test macro not defined) __cpp_lib_format >= 202207L
+ Clarify handling of encodings in localized formatting of chrono types
+
+
+ P2419R2
+
+ __cpp_lib_format >= 202207L
Formatting Ranges
+
+ P2286R8
+
+ __cpp_lib_format_ranges >= 202207L
Improve default container formatting
+
+ P2585R1
+
+ __cpp_lib_format_ranges >= 202207L
Formatted output
+
+ P2093R14
+
+ __cpp_lib_print >= 202207L
+ Should the output of std::print to a terminal be synchronized with
+ the underlying stream?
+
+
+ P2539R3
+
+
+ Formatting thread::id
and stacktrace
+
+
+ P2693R1
+
+ 14.1 __cpp_lib_formatters >= 202302L
+ Add Constexpr Modifiers to Functions to_chars
and
+ from_chars
for Integral Types in
+ <charconv>
Header
+
+
+ P2291R3
+
+ 13.1 __cpp_lib_constexpr_charconv >= 202207L
Miscellaneous
Inheriting from std::variant
@@ -1876,11 +2051,21 @@ or any notes about the implementation.
P0323R12
- 12.1 __cpp_lib_expected >= 202202L
Monadic operations for std::optional
+ 12.1 __cpp_lib_expected >= 202202L
Monadic operations for std::expected
+
+ P2505R5
+
+ 13.1 __cpp_lib_expected >= 202211L
Monadic operations for std::optional
P0798R8
- 12.1 __cpp_lib_optional >= 202110L
move_only_function
+ 12.1 __cpp_lib_optional >= 202110L
+ Compatibility between tuple
, pair
+ and tuple-like objects
+
+ P2165R4
+
+ __cpp_lib_tuple_like >= 202207L
move_only_function
P0288R9
@@ -1900,7 +2085,15 @@ or any notes about the implementation.
P2401R0
- 12.1 Support C atomics in C++
+ 12.1 A more constexpr bitset
+
+ P2417R2
+
+ 13.1 __cpp_lib_constexpr_bitset >= 202207L
Extended floating-point types and standard names
+
+ P1467R9
+
+ 13.1 Support C atomics in C++
P0943R6
diff --git a/libstdc++-v3/doc/xml/manual/configure.xml b/libstdc++-v3/doc/xml/manual/configure.xml
index 1b8c37ce2a9..0a477ab85e5 100644
--- a/libstdc++-v3/doc/xml/manual/configure.xml
+++ b/libstdc++-v3/doc/xml/manual/configure.xml
@@ -341,8 +341,8 @@
C++ includes. If enabled (as by default), and the compiler
seems capable of passing the simple sanity checks thrown at
it, try to build stdc++.h.gch as part of the make process.
- In addition, this generated file is used later on (by appending
- --include bits/stdc++.h
to CXXFLAGS) when running the
+ In addition, this generated file is used later on (by appending
+ -include bits/stdc++.h
to CXXFLAGS) when running the
testsuite.
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml
index da911169cc8..6e560069cbc 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml
@@ -251,14 +251,13 @@ or any notes about the implementation.
-
Improving Completeness Requirements for Type Traits
P1285R0
- Partial
-
+ —
+ Most misuses are diagnosed, but not all.
@@ -541,13 +540,12 @@ or any notes about the implementation.
-
Avoid template bloat for safe_ranges
in combination with ‘subrange-y’ view adaptors.
P1739R4
-
+ 12.1
@@ -559,18 +557,16 @@ or any notes about the implementation.
-
Extending chrono to Calendars and Time Zones
P0355R7
-
+ 14.1 (see Note 2)
__cpp_lib_chrono >= 201803L
-
Miscellaneous minor fixes for chrono
@@ -667,39 +663,36 @@ or any notes about the implementation.
-
Text formatting
P0645R10
-
+ 13.1
__cpp_lib_format >= 201907L
-
Integration of chrono with text formatting
P1361R2
-
+ 13.1
__cpp_lib_format >= 201907L
-
Printf corner cases in std::format
P1652R1
-
+ 13.1
__cpp_lib_format >= 201907L
@@ -716,13 +709,12 @@ or any notes about the implementation.
-
Update The Reference To The Unicode Standard
P1025R1
-
+ —
@@ -796,13 +788,12 @@ or any notes about the implementation.
-
Comparing Unordered Containers
P0809R0
-
+ —
@@ -1039,7 +1030,7 @@ or any notes about the implementation.
P0551R3
-
+ These changes will not be implemented.
@@ -1113,13 +1104,12 @@ or any notes about the implementation.
-
Standard Library Specification in a Concepts and Contracts World
P0788R3
-
+ —
@@ -1244,13 +1234,12 @@ or any notes about the implementation.
-
Cleaning up Clause 20
P1148R0
-
+ —
@@ -1341,7 +1330,6 @@ or any notes about the implementation.
-
Mandating the Standard Library:
Clause 22 - Iterators library
@@ -1350,7 +1338,7 @@ or any notes about the implementation.
P1464R1
-
+ —
@@ -1459,4 +1447,10 @@ Note 1: This feature is supported in older releases but the
(or not defined at all) until the version shown in parentheses.
+
+Note 2: The C++20 calendar types are supported since 11.1,
+time zones and UTC are supported since 13.1,
+and chrono::parse is supported since 14.1.
+
+
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2023.xml b/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
index f23c64d6a29..9d121af82df 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
@@ -187,17 +187,207 @@ or any notes about the implementation.
-
zip
P2321R2
-
+ 13.1
__cpp_lib_ranges_zip >= 202110L
+
+ views::repeat
+
+
+ P2474R2
+
+
+ 13.1
+ __cpp_lib_ranges_repeat >= 202207L
+
+
+
+ views::enumerate
+
+
+ P2164R9
+
+
+ 13.1
+ __cpp_lib_ranges_enumerate >= 202302L
+
+
+
+ views::join_with
+
+
+ P2441R2
+
+
+ 13.1
+ __cpp_lib_ranges_join_with >= 202202L
+
+
+
+
+ Windowing range adaptors: views::chunk
+ and views::slide
+
+
+ P2442R2
+
+
+ 13.1
+ __cpp_lib_ranges_slide >= 202202L
+
+
+
+ views::chunk_by
+
+
+ P2443R1
+
+
+ 13.1
+ __cpp_lib_ranges_chunk_by >= 202202L
+
+
+
+ views::stride
+
+
+ P1899R3
+
+
+ 13.1
+ __cpp_lib_ranges_stride >= 202207L
+
+
+
+ views::cartesian_product
+
+
+ P2374R4
+
+
+ 13.1
+ __cpp_lib_ranges_cartesian_product >= 202207L
+
+
+
+ Empty Product for certain Views
+
+
+ P2540R1
+
+
+ 13.1
+ __cpp_lib_ranges_cartesian_product >= 202207L
+
+
+
+ views::as_rvalue
+
+
+ P2446R2
+
+
+ 13.1
+ __cpp_lib_ranges_as_rvalue >= 202207L
+
+
+
+
+ cbegin
should always return a constant iterator
+
+
+
+ P2278R4
+
+
+ 13.1
+ __cpp_lib_ranges_as_const >= 202207L
+
+
+
+
+ ranges::to
+
+
+ P1206R7
+
+
+
+ __cpp_lib_ranges_to_container >= 202202L
+
+
+
+ Pipe support for user-defined range adaptors
+
+
+ P2387R3
+
+
+ 13.1
+
+ __cpp_lib_bind_pack >= 202202L
,
+ __cpp_lib_ranges >= 202202L
+
+
+
+
+
+
+ ranges::iota
, ranges::shift_left
,
+ and ranges::shift_right
+
+
+
+ P2440R1
+
+
+ 13.1 (ranges::iota
)
+
+ __cpp_lib_ranges_iota >= 202202L
,
+ __cpp_lib_shift >= 202202L
+
+
+
+
+ ranges::find_last
+
+
+ P1223R5
+
+
+ 13.1
+ __cpp_lib_ranges_find_last >= 202207L
+
+
+
+ ranges::contains
+
+
+ P2302R4
+
+
+ 13.1
+ __cpp_lib_ranges_contains >= 202207L
+
+
+
+ ranges::fold
+
+
+ P2322R6
+
+
+ 13.1
+ __cpp_lib_ranges_fold >= 202207L
+
+
Compile-time programming
@@ -294,14 +484,14 @@ or any notes about the implementation.
-
+
A type trait to detect reference binding to temporary
P2255R2
-
+ 13.1 (missing changes to std::tuple
__cpp_lib_reference_from_temporary >= 202202L
@@ -395,6 +585,235 @@ or any notes about the implementation.
__cpp_lib_associative_heterogeneous_erasure >= 202110L
+
+
+ <flat_map>
+
+
+ P0429R9
+
+
+
+ __cpp_lib_flat_map >= 202207L
+
+
+
+
+ <flat_set>
+
+
+ P1222R4
+
+
+
+ __cpp_lib_flat_set >= 202207L
+
+
+
+
+ mdspan
+
+
+ P0009R18
+
+
+
+ __cpp_lib_mdspan >= 202207L
+
+
+
+
+
+ index_type
& size_type
+ in mdspan
+
+
+
+ P2599R2
+
+
+
+ __cpp_lib_mdspan >= 202207L
+
+
+
+
+
+ mdspan
: rename pointer
and
+ contiguous
+
+
+
+ P2604R0
+
+
+
+ __cpp_lib_mdspan >= 202207L
+
+
+
+
+ Add the missing empty
to mdspan
+
+
+ P2613R1
+
+
+
+ __cpp_lib_mdspan >= 202207L
+
+
+
+
+
+ layout_stride
static extents default constructor fix
+
+
+
+ P2763R1
+
+
+
+
+
+
+
+
+ Strings and text
+
+
+
+
+ std::format improvements
+
+
+ P2216R3
+
+
+ 13.1
+ __cpp_lib_format >= 202106L
+
+
+
+
+ Add support for std::generator
-like types to
+ std::format
+
+
+
+ P2418R2
+
+
+ 13.1
+ __cpp_lib_format >= 202110L
+
+
+
+
+ Expose std::basic-format-string <charT, Args...>
+
+
+
+ P2508R1
+
+
+ 13.1 (feature test macro not defined)
+ __cpp_lib_format >= 202207L
+
+
+
+
+
+ Clarify handling of encodings in localized formatting of chrono types
+
+
+
+ P2419R2
+
+
+
+ __cpp_lib_format >= 202207L
+
+
+
+
+ Formatting Ranges
+
+
+ P2286R8
+
+
+
+ __cpp_lib_format_ranges >= 202207L
+
+
+
+
+ Improve default container formatting
+
+
+ P2585R1
+
+
+
+ __cpp_lib_format_ranges >= 202207L
+
+
+
+
+ Formatted output
+
+
+ P2093R14
+
+
+
+ __cpp_lib_print >= 202207L
+
+
+
+
+
+ Should the output of std::print to a terminal be synchronized with
+ the underlying stream?
+
+
+
+ P2539R3
+
+
+
+
+
+
+
+
+ Formatting thread::id
and stacktrace
+
+
+
+ P2693R1
+
+
+ 14.1
+ __cpp_lib_formatters >= 202302L
+
+
+
+
+ Add Constexpr Modifiers to Functions to_chars
and
+ from_chars
for Integral Types in
+ <charconv>
Header
+
+
+
+ P2291R3
+
+
+ 13.1
+ __cpp_lib_constexpr_charconv >= 202207L
+
+
Miscellaneous
@@ -456,6 +875,17 @@ or any notes about the implementation.
__cpp_lib_expected >= 202202L
+
+ Monadic operations for std::expected
+
+
+ P2505R5
+
+
+ 13.1
+ __cpp_lib_expected >= 202211L
+
+
Monadic operations for std::optional
@@ -467,6 +897,20 @@ or any notes about the implementation.
__cpp_lib_optional >= 202110L
+
+
+
+ Compatibility between tuple
, pair
+ and tuple-like objects
+
+
+ P2165R4
+
+
+
+ __cpp_lib_tuple_like >= 202207L
+
+
move_only_function
@@ -522,6 +966,28 @@ or any notes about the implementation.
+
+ A more constexpr bitset
+
+
+ P2417R2
+
+
+ 13.1
+ __cpp_lib_constexpr_bitset >= 202207L
+
+
+
+ Extended floating-point types and standard names
+
+
+ P1467R9
+
+
+ 13.1
+
+
+
Support C atomics in C++