From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 3C3F83858CDB for ; Fri, 7 Oct 2022 11:43:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3C3F83858CDB Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1665143032; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nzvhRgSMdaxPUQObIVLDxUCWhQCjs4e74ZkE1/TMwb8=; b=TANjEPLFAEd0hT8avhX4/2dnSBJQUqLedj33GFfXpVSEIMJnOeWqav9olj7ZfLWcOwm3aX eGBityEKbafwwC0rCTvdGBLqm/sNcQ5iJgD6eIsUING3Z8ozoe4wdBhECZJrWxRhvd43+J Rkuhr16o3Z8DoAbbqNRTzEWbow+zNtc= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-42-SL6TySpeMmezs_XLP8JFIQ-1; Fri, 07 Oct 2022 07:43:51 -0400 X-MC-Unique: SL6TySpeMmezs_XLP8JFIQ-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A5AEB101A52A; Fri, 7 Oct 2022 11:43:51 +0000 (UTC) Received: from localhost (unknown [10.33.36.64]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1A6F340F9D40; Fri, 7 Oct 2022 11:43:51 +0000 (UTC) From: Jonathan Wakely To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: [committed] libstdc++: Use bold style for DR titles in the manual Date: Fri, 7 Oct 2022 12:43:50 +0100 Message-Id: <20221007114350.1212377-1-jwakely@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Pushed to trunk. -- >8-- This matches how the issues are styled in the LWG issues list, and also allows us to use italics for "cv" (e.g. in issue 2487). libstdc++-v3/ChangeLog: * doc/xml/manual/intro.xml: Add role="bold" attribute to emphasis elements for issue titles. * doc/html/manual/bugs.html: Regenerate. --- libstdc++-v3/doc/html/manual/bugs.html | 400 ++++++++++++------------- libstdc++-v3/doc/xml/manual/intro.xml | 387 ++++++++++++------------ 2 files changed, 390 insertions(+), 397 deletions(-) diff --git a/libstdc++-v3/doc/xml/manual/intro.xml b/libstdc++-v3/doc/xml/manual/intro.xml index e3a03cf9d59..dee01c82159 100644 --- a/libstdc++-v3/doc/xml/manual/intro.xml +++ b/libstdc++-v3/doc/xml/manual/intro.xml @@ -241,56 +241,56 @@ requirements of the license of GCC. 5: - string::compare specification questionable + string::compare specification questionable This should be two overloaded functions rather than a single function. 17: - Bad bool parsing + Bad bool parsing Apparently extracting Boolean values was messed up... 19: - "Noconv" definition too vague + "Noconv" definition too vague If codecvt::do_in returns noconv there are no changes to the values in [to, to_limit). 22: - Member open vs flags + Member open vs flags Re-opening a file stream does not clear the state flags. 23: - Num_get overflow result + Num_get overflow result Implement the proposed resolution. 25: - String operator<< uses width() value wrong + String operator<< uses width() value wrong Padding issues. 48: - Use of non-existent exception constructor + Use of non-existent exception constructor An instance of ios_base::failure is constructed instead. 49: - Underspecification of ios_base::sync_with_stdio + Underspecification of ios_base::sync_with_stdio The return type is the previous state of synchronization. 50: - Copy constructor and assignment operator of ios_base + Copy constructor and assignment operator of ios_base These members functions are declared private and are thus inaccessible. Specifying the correct semantics of @@ -298,55 +298,55 @@ requirements of the license of GCC. 60: - What is a formatted input function? + What is a formatted input function? This DR made many widespread changes to basic_istream and basic_ostream all of which have been implemented. 63: - Exception-handling policy for unformatted output + Exception-handling policy for unformatted output Make the policy consistent with that of formatted input, unformatted input, and formatted output. 68: - Extractors for char* should store null at end + Extractors for char* should store null at end And they do now. An editing glitch in the last item in the list of [27.6.1.2.3]/7. 74: - Garbled text for codecvt::do_max_length + Garbled text for codecvt::do_max_length The text of the standard was gibberish. Typos gone rampant. 75: - Contradiction in codecvt::length's argument types + Contradiction in codecvt::length's argument types Change the first parameter to stateT& and implement the new effects paragraph. 83: - string::npos vs. string::max_size() + string::npos vs. string::max_size() Safety checks on the size of the string should test against max_size() rather than npos. 90: - Incorrect description of operator>> for strings + Incorrect description of operator>> for strings The effect contain isspace(c,getloc()) which must be replaced by isspace(c,is.getloc()). 91: - Description of operator>> and getline() for string<> + Description of operator>> and getline() for string<> might cause endless loop They behave as a formatted input function and as an unformatted @@ -355,7 +355,7 @@ requirements of the license of GCC. 103: - set::iterator is required to be modifiable, but this allows + set::iterator is required to be modifiable, but this allows modification of keys. For associative containers where the value type is the same as @@ -364,14 +364,14 @@ requirements of the license of GCC. 109: - Missing binders for non-const sequence elements + Missing binders for non-const sequence elements The binder1st and binder2nd didn't have an operator() taking a non-const parameter. 110: - istreambuf_iterator::equal not const + istreambuf_iterator::equal not const This was not a const member function. Note that the DR says to replace the function with a const one; we have instead provided an @@ -379,80 +379,73 @@ requirements of the license of GCC. 117: - basic_ostream uses nonexistent num_put member functions + basic_ostream uses nonexistent num_put member functions num_put::put() was overloaded on the wrong types. 118: - basic_istream uses nonexistent num_get member functions + basic_istream uses nonexistent num_get member functions Same as 117, but for num_get::get(). 129: - Need error indication from seekp() and seekg() + Need error indication from seekp() and seekg() These functions set failbit on error now. 130: - Return type of container::erase(iterator) differs for associative containers + Return type of container::erase(iterator) differs for associative containers Make member erase return iterator for set, multiset, map, multimap. 136: - seekp, seekg setting wrong streams? + seekp, seekg setting wrong streams? seekp should only set the output stream, and seekg should only set the input stream. - - 167: - Improper use of traits_type::length() + Improper use of traits_type::length() op<< with a const char* was calculating an incorrect number of characters to write. 169: - Bad efficiency of overflow() mandated + Bad efficiency of overflow() mandated Grow efficiently the internal array object. 171: - Strange seekpos() semantics due to joint position + Strange seekpos() semantics due to joint position Quite complex to summarize... 181: - make_pair() unintended behavior + make_pair() unintended behavior This function used to take its arguments as reference-to-const, now it copies them (pass by value). 195: - Should basic_istream::sentry's constructor ever set eofbit? + Should basic_istream::sentry's constructor ever set eofbit? Yes, it can, specifically if EOF is reached while skipping whitespace. 206: - operator new(size_t, nothrow) may become - unlinked to ordinary operator new if ordinary - version replaced - + operator new(size_t, nothrow) may become + unlinked to ordinary operator new if ordinary + version replaced + The nothrow forms of new and delete were changed to call the throwing forms, handling any exception by @@ -460,14 +453,14 @@ requirements of the license of GCC. 211: - operator>>(istream&, string&) doesn't set failbit + operator>>(istream&, string&) doesn't set failbit If nothing is extracted into the string, op>> now sets failbit (which can cause an exception, etc., etc.). 214: - set::find() missing const overload + set::find() missing const overload Both set and multiset were missing overloaded find, lower_bound, upper_bound, and equal_range functions @@ -475,47 +468,47 @@ requirements of the license of GCC. 231: - Precision in iostream? + Precision in iostream? For conversion from a floating-point type, str.precision() is specified in the conversion specification. 233: - Insertion hints in associative containers + Insertion hints in associative containers Implement N1780, first check before then check after, insert as close to hint as possible. 235: - No specification of default ctor for reverse_iterator + No specification of default ctor for reverse_iterator The declaration of reverse_iterator lists a default constructor. However, no specification is given what this constructor should do. 241: - Does unique_copy() require CopyConstructible and Assignable? + Does unique_copy() require CopyConstructible and Assignable? Add a helper for forward_iterator/output_iterator, fix the existing one for input_iterator/output_iterator to not rely on Assignability. 243: - get and getline when sentry reports failure + get and getline when sentry reports failure Store a null character only if the character array has a non-zero size. 251: - basic_stringbuf missing allocator_type + basic_stringbuf missing allocator_type This nested typedef was originally not specified. 253: - valarray helper functions are almost entirely useless + valarray helper functions are almost entirely useless Make the copy constructor and copy-assignment operator declarations public in gslice_array, indirect_array, mask_array, slice_array; provide @@ -523,60 +516,60 @@ requirements of the license of GCC. 265: - std::pair::pair() effects overly restrictive + std::pair::pair() effects overly restrictive The default ctor would build its members from copies of temporaries; now it simply uses their respective default ctors. 266: - bad_exception::~bad_exception() missing Effects clause + bad_exception::~bad_exception() missing Effects clause The bad_* classes no longer have destructors (they are trivial), since no description of them was ever given. 271: - basic_iostream missing typedefs + basic_iostream missing typedefs The typedefs it inherits from its base classes can't be used, since (for example) basic_iostream<T>::traits_type is ambiguous. 275: - Wrong type in num_get::get() overloads + Wrong type in num_get::get() overloads Similar to 118. 280: - Comparison of reverse_iterator to const reverse_iterator + Comparison of reverse_iterator to const reverse_iterator Add global functions with two template parameters. (NB: not added for now a templated assignment operator) 292: - Effects of a.copyfmt (a) + Effects of a.copyfmt (a) If (this == &rhs) do nothing. 300: - List::merge() specification incomplete + List::merge() specification incomplete If (this == &x) do nothing. 303: - Bitset input operator underspecified + Bitset input operator underspecified Basically, compare the input character to is.widen(0) and is.widen(1). 305: - Default behavior of codecvt<wchar_t, char, + Default behavior of codecvt<wchar_t, char, mbstate_t>::length() Do not specify what codecvt<wchar_t, char, @@ -584,20 +577,20 @@ requirements of the license of GCC. 328: - Bad sprintf format modifier in + Bad sprintf format modifier in money_put<>::do_put() Change the format string to "%.0Lf". 365: - Lack of const-qualification in clause 27 + Lack of const-qualification in clause 27 Add const overloads of is_open. 387: - std::complex over-encapsulated + std::complex over-encapsulated Add the real(T) and imag(T) members; in C++11 mode, also adjust the existing @@ -606,26 +599,26 @@ requirements of the license of GCC. 389: - Const overload of valarray::operator[] returns + Const overload of valarray::operator[] returns by value Change it to return a const T&. 396: - what are characters zero and one + what are characters zero and one Implement the proposed resolution. 402: - Wrong new expression in [some_]allocator::construct + Wrong new expression in [some_]allocator::construct Replace "new" with "::new". 408: - + Is vector<reverse_iterator<char*> > forbidden? @@ -633,95 +626,95 @@ requirements of the license of GCC. 409: - Closing an fstream should clear the error state + Closing an fstream should clear the error state Have open clear the error flags. 415: - Behavior of std::ws + Behavior of std::ws Change it to be an unformatted input function (i.e. construct a sentry and catch exceptions). 431: - Swapping containers with unequal allocators + Swapping containers with unequal allocators Implement Option 3, as per N1599. 432: - stringbuf::overflow() makes only one write position + stringbuf::overflow() makes only one write position available Implement the resolution, beyond DR 169. 434: - bitset::to_string() hard to use + bitset::to_string() hard to use Add three overloads, taking fewer template arguments. 438: - Ambiguity in the "do the right thing" clause + Ambiguity in the "do the right thing" clause Implement the resolution, basically cast less. 445: - iterator_traits::reference unspecified for some iterator categories + iterator_traits::reference unspecified for some iterator categories Change istreambuf_iterator::reference in C++11 mode. 453: - basic_stringbuf::seekoff need not always fail for an empty stream + basic_stringbuf::seekoff need not always fail for an empty stream Don't fail if the next pointer is null and newoff is zero. 455: - cerr::tie() and wcerr::tie() are overspecified + cerr::tie() and wcerr::tie() are overspecified Initialize cerr tied to cout and wcerr tied to wcout. 464: - Suggestion for new member functions in standard containers + Suggestion for new member functions in standard containers Add data() to std::vector and at(const key_type&) to std::map. 467: - char_traits::lt(), compare(), and memcmp() + char_traits::lt(), compare(), and memcmp() Change lt. 508: - Bad parameters for ranlux64_base_01 + Bad parameters for ranlux64_base_01 Fix the parameters. 512: - Seeding subtract_with_carry_01 from a single unsigned long + Seeding subtract_with_carry_01 from a single unsigned long Construct a linear_congruential engine and seed with it. 526: - Is it undefined if a function in the standard changes in + Is it undefined if a function in the standard changes in parameters? Use &value. 538: - 241 again: Does unique_copy() require CopyConstructible + 241 again: Does unique_copy() require CopyConstructible and Assignable? In case of input_iterator/output_iterator rely on Assignability of @@ -729,7 +722,7 @@ requirements of the license of GCC. 539: - partial_sum and adjacent_difference should mention + partial_sum and adjacent_difference should mention requirements We were almost doing the right thing, just use std::move @@ -737,262 +730,262 @@ requirements of the license of GCC. 541: - shared_ptr template assignment and void + shared_ptr template assignment and void Add an auto_ptr<void> specialization. 543: - valarray slice default constructor + valarray slice default constructor Follow the straightforward proposed resolution. 550: - What should the return type of pow(float,int) be? + What should the return type of pow(float,int) be? In C++11 mode, remove the pow(float,int), etc., signatures. 581: - flush() not unformatted function + flush() not unformatted function Change it to be a unformatted output function (i.e. construct a sentry and catch exceptions). 586: - string inserter not a formatted function + string inserter not a formatted function Change it to be a formatted output function (i.e. catch exceptions). 596: - 27.8.1.3 Table 112 omits "a+" and "a+b" modes + 27.8.1.3 Table 112 omits "a+" and "a+b" modes Add the missing modes to fopen_mode. 630: - arrays of valarray + arrays of valarray Implement the simple resolution. 660: - Missing bitwise operations + Missing bitwise operations Add the missing operations. 691: - const_local_iterator cbegin, cend missing from TR1 + const_local_iterator cbegin, cend missing from TR1 In C++11 mode add cbegin(size_type) and cend(size_type) to the unordered containers. 693: - std::bitset::all() missing + std::bitset::all() missing Add it, consistently with the discussion. 695: - ctype<char>::classic_table() not accessible + ctype<char>::classic_table() not accessible Make the member functions table and classic_table public. 696: - istream::operator>>(int&) broken + istream::operator>>(int&) broken Implement the straightforward resolution. 761: - unordered_map needs an at() member function + unordered_map needs an at() member function In C++11 mode, add at() and at() const. 775: - Tuple indexing should be unsigned? + Tuple indexing should be unsigned? Implement the int -> size_t replacements. 776: - Undescribed assign function of std::array + Undescribed assign function of std::array In C++11 mode, remove assign, add fill. 781: - std::complex should add missing C99 functions + std::complex should add missing C99 functions In C++11 mode, add std::proj. 809: - std::swap should be overloaded for array types + std::swap should be overloaded for array types Add the overload. 853: - to_string needs updating with zero and one + to_string needs updating with zero and one Update / add the signatures. 865: - More algorithms that throw away information + More algorithms that throw away information The traditional HP / SGI return type and value is blessed by the resolution of the DR. 1203: - More useful rvalue stream insertion + More useful rvalue stream insertion Return the stream as its original type, not the base class. 1339: - uninitialized_fill_n should return the end of its range + uninitialized_fill_n should return the end of its range Return the end of the filled range. 2021: - Further incorrect uses of result_of + Further incorrect uses of result_of Correctly decay types in signature of std::async. 2049: - is_destructible underspecified + is_destructible underspecified Handle non-object types. 2056: - future_errc enums start with value 0 (invalid value for broken_promise) + future_errc enums start with value 0 (invalid value for broken_promise) Reorder enumerators. 2059: - C++0x ambiguity problem with map::erase + C++0x ambiguity problem with map::erase Add additional overloads. 2062: - 2062. Effect contradictions w/o no-throw guarantee of std::function swaps + 2062. Effect contradictions w/o no-throw guarantee of std::function swaps Add noexcept to swap functions. 2063: - Contradictory requirements for string move assignment + Contradictory requirements for string move assignment Respect propagation trait for move assignment. 2064: - More noexcept issues in basic_string + More noexcept issues in basic_string Add noexcept to the comparison operators. 2067: - packaged_task should have deleted copy c'tor with const parameter + packaged_task should have deleted copy c'tor with const parameter Fix signatures. 2101: - Some transformation types can produce impossible types + Some transformation types can produce impossible types Use the referenceable type concept. 2106: - move_iterator wrapping iterators returning prvalues + move_iterator wrapping iterators returning prvalues Change the reference type. 2108: - No way to identify allocator types that always compare equal + No way to identify allocator types that always compare equal Define and use is_always_equal even for C++11. 2118: - unique_ptr for array does not support cv qualification conversion of actual argument + unique_ptr for array does not support cv qualification conversion of actual argument Adjust constraints to allow safe conversions. 2127: - Move-construction with raw_storage_iterator + Move-construction with raw_storage_iterator Add assignment operator taking an rvalue. 2132: - std::function ambiguity + std::function ambiguity Constrain the constructor to only accept callable types. 2141: - common_type trait produces reference types + common_type trait produces reference types Use decay for the result type. 2144: - Missing noexcept specification in type_index + Missing noexcept specification in type_index Add noexcept 2145: - error_category default constructor + error_category default constructor Declare a public constexpr constructor. 2162: - allocator_traits::max_size missing noexcept + allocator_traits::max_size missing noexcept Add noexcept. 2187: - vector<bool> is missing emplace and emplace_back member functions + vector<bool> is missing emplace and emplace_back member functions Add emplace and emplace_back member functions. 2192: - Validity and return type of std::abs(0u) is unclear + Validity and return type of std::abs(0u) is unclear Move all declarations to a common header and remove the generic abs which accepted unsigned arguments. 2196: - Specification of is_*[copy/move]_[constructible/assignable] unclear for non-referencable types + Specification of is_*[copy/move]_[constructible/assignable] unclear for non-referencable types Use the referenceable type concept. 2212: - tuple_size for const pair request <tuple> header + tuple_size for const pair request <tuple> header The tuple_size and tuple_element partial specializations are defined in <utility> which @@ -1000,79 +993,79 @@ requirements of the license of GCC. 2296: - std::addressof should be constexpr + std::addressof should be constexpr Use __builtin_addressof and add constexpr to addressof for C++17 and later. 2306: - match_results::reference should be value_type&, not const value_type& + match_results::reference should be value_type&, not const value_type& Change typedef. 2313: - tuple_size should always derive from integral_constant<size_t, N> + tuple_size should always derive from integral_constant<size_t, N> Update definitions of the partial specializations for const and volatile types. 2328: - Rvalue stream extraction should use perfect forwarding + Rvalue stream extraction should use perfect forwarding Use perfect forwarding for right operand. 2329: - regex_match()/regex_search() with match_results should forbid temporary strings + regex_match()/regex_search() with match_results should forbid temporary strings Add deleted overloads for rvalue strings. 2332: - regex_iterator/regex_token_iterator should forbid temporary regexes + regex_iterator/regex_token_iterator should forbid temporary regexes Add deleted constructors. 2332: - Unnecessary copying when inserting into maps with braced-init syntax + Unnecessary copying when inserting into maps with braced-init syntax Add overloads of insert taking value_type&& rvalues. 2399: - shared_ptr's constructor from unique_ptr should be constrained + shared_ptr's constructor from unique_ptr should be constrained Constrain the constructor to require convertibility. 2400: - shared_ptr's get_deleter() should use addressof() + shared_ptr's get_deleter() should use addressof() Use addressof. 2401: - std::function needs more noexcept + std::function needs more noexcept Add noexcept to the assignment and comparisons. 2407: - packaged_task(allocator_arg_t, const Allocator&, F&&) + packaged_task(allocator_arg_t, const Allocator&, F&&) should neither be constrained nor explicit - + Remove explicit from the constructor. 2408: - SFINAE-friendly + SFINAE-friendly common_type/iterator_traits is missing in C++14 - + Make iterator_traits empty if any of the types is not present in the iterator. @@ -1080,237 +1073,237 @@ requirements of the license of GCC. 2415: - Inconsistency between unique_ptr and shared_ptr + Inconsistency between unique_ptr and shared_ptr Create empty an shared_ptr from an empty unique_ptr. 2418: - apply does not work with member pointers + apply does not work with member pointers Use mem_fn for member pointers. 2440: - seed_seq::size() should be noexcept + seed_seq::size() should be noexcept Add noexcept. 2441: - Exact-width atomic typedefs should be provided + Exact-width atomic typedefs should be provided Define the typedefs. 2442: - call_once() shouldn't DECAY_COPY() + call_once() shouldn't DECAY_COPY() Remove indirection through call wrapper that made copies of arguments and forward arguments straight to std::invoke. 2454: - Add raw_storage_iterator::base() member - + Add raw_storage_iterator::base() member + Add the base() member function. 2455: - Allocator default construction should be allowed to throw - + Allocator default construction should be allowed to throw + Make noexcept specifications conditional. 2458: - N3778 and new library deallocation signatures - + N3778 and new library deallocation signatures + Remove unused overloads. 2459: - std::polar should require a non-negative rho - + std::polar should require a non-negative rho + Add debug mode assertion. 2465: - SFINAE-friendly common_type is nearly impossible + SFINAE-friendly common_type is nearly impossible to specialize correctly and regresses key functionality - + Detect whether decay_t changes either type and use the decayed types if so. 2466: - allocator_traits::max_size() default behavior is incorrect - + allocator_traits::max_size() default behavior is incorrect + Divide by the object type. 2484: - rethrow_if_nested() is doubly unimplementable - + rethrow_if_nested() is doubly unimplementable + Avoid using dynamic_cast when it would be ill-formed. 2487: - bind() should be const-overloaded - not cv-overloaded - + bind() should be const-overloaded + not cv-overloaded + Deprecate volatile-qualified operator() for C++17, make it ill-formed for C++20. 2499: - operator>>(basic_istream&, CharT*) makes it hard to avoid buffer overflows - + operator>>(basic_istream&, CharT*) makes it hard to avoid buffer overflows + Replace operator>>(basic_istream&, CharT*) and other overloads writing through pointers. 2537: - Constructors for priority_queue taking allocators + Constructors for priority_queue taking allocators should call make_heap - + Call make_heap. 2566: - Requirements on the first template parameter of container adaptors - + Requirements on the first template parameter of container adaptors + Add static assertions to enforce the requirement. 2583: - There is no way to supply an allocator for basic_string(str, pos) - + There is no way to supply an allocator for basic_string(str, pos) + Add new constructor. 2586: - Wrong value category used in scoped_allocator_adaptor::construct() - + Wrong value category used in scoped_allocator_adaptor::construct() + Change internal helper for uses-allocator construction to always check using const lvalue allocators. 2684: - priority_queue lacking comparator typedef - + priority_queue lacking comparator typedef + Define the value_compare typedef. 2735: - std::abs(short), + std::abs(short), std::abs(signed char) and others should return int instead of double in order to be compatible with C++98 and C - + Resolved by the changes for 2192. 2770: - tuple_size<const T> specialization is not + tuple_size<const T> specialization is not SFINAE compatible and breaks decomposition declarations - + Safely detect tuple_size<T>::value and only use it if valid. 2781: - Contradictory requirements for std::function + Contradictory requirements for std::function and std::reference_wrapper - + Remove special handling for reference_wrapper arguments and store them directly as the target object. 2802: - Add noexcept to several shared_ptr related + Add noexcept to several shared_ptr related functions - + Add noexcept. 2873: - shared_ptr constructor requirements for a deleter - + shared_ptr constructor requirements for a deleter + Use rvalues for deleters. 2921: - packaged_task and type-erased allocators - + packaged_task and type-erased allocators + For C++17 mode, remove the constructors taking an allocator argument. 2942: - LWG 2873's resolution missed + LWG 2873's resolution missed weak_ptr::owner_before - + Add noexcept. 2996: - Missing rvalue overloads for + Missing rvalue overloads for shared_ptr operations - + Add additional constructor and cast overloads. 2993: - reference_wrapper<T> conversion from T&& - + reference_wrapper<T> conversion from T&& + Replaced the constructors with a constrained template, to prevent participation in overload resolution when not valid. 3074: - Non-member functions for valarray should only deduce from the valarray - + Non-member functions for valarray should only deduce from the valarray + Change scalar operands to be non-deduced context, so that they will allow conversions from other types to the value_type. 3076: - basic_string CTAD ambiguity - + basic_string CTAD ambiguity + Change constructors to constrained templates. 3096: - path::lexically_relative is confused by trailing slashes - + path::lexically_relative is confused by trailing slashes + Implement the fix for trailing slashes. -- 2.37.3