C++ Standard Library Backport
invokemem_fnnot_fn
bool_constantendianis_aggregateis_null_pointerremove_cvreftype_identityvoid_t- Invocable type traits
std::is_invocablestd::is_invocable_rstd::is_nothrow_invocablestd::is_nothrow_invocable_r
- Logical operator type traits
conjunctiondisjunctionnegation
- Metafunction aliases:
*_t
as_constexchangeintegral_constant::operator()- Compile-time integer sequences
integer_sequenceindex_sequencemake_integer_sequencemake_index_sequenceindex_sequence_for
- N3302: Constexpr Library Additions: complex, v2
- N3346: Terminology for Container Element Requirements
- N3421: Making Operator Functors
greater<> - N3462:
std::result_ofand SFINAE - N3469: Constexpr Library Additions: chrono, v3
- N3470: Constexpr Library Additions: containers, v2
- N3471: Constexpr Library Additions: utilities, v3
- N3545: An Incremental Improvement to
integral_constant - N3642: User-defined Literals
- N3644: Null Forward Iterators
- N3654: Quoted Strings
- N3655: TransformationTraits Redux (excluding part 4)
- N3656:
make_unique - N3657: Adding heterogeneous comparison lookup to associative containers
- N3658: Compile-time integer sequences
- N3659: Shared Locking in C++
- N3668:
std::exchange()utility function - N3669: Fixing
constexprmember functions withoutconst - N3670: Addressing Tuples by Type
- N3671: Making non-modifying sequence operations more robust
- N3779: User-defined Literals for
std::complex - N3789: Constexpr Library Additions: functional
- N3887: Consistent Metafunction Aliases
- N3891: A proposal to rename
shared_mutextoshared_timed_mutex - N3924: Discouraging
rand()in C++14
- LWG1214: Insufficient/inconsistent key immutability requirements for associative containers
- LWG1450: Contradiction in
regex_constants - LWG2003: String exception inconsistency in erase.
- LWG2005:
unordered_map::insert(T&&)protection should apply tomaptoo - LWG2009: Reporting out-of-bound values on numeric string conversions
- LWG2010:
is_*traits for binding operations can't be meaningfully specialized - LWG2011: Unexpected output required of strings
- LWG2013: Do library implementers have the freedom to add
constexpr? - LWG2015: Incorrect pre-conditions for some type traits
- LWG2018:
regex_traits::isctypeReturns clause is wrong - LWG2021: Further incorrect usages of
result_of - LWG2028:
messages_base::catalogoverspecified - LWG2033: Preconditions of
reserve,shrink_to_fit, andresizefunctions - LWG2039: Issues with
std::reverseandstd::copy_if - LWG2044: No definition of "Stable" for copy algorithms
- LWG2045:
forward_list::mergeandforward_list::splice_afterwith unequal allocators - LWG2047: Incorrect "mixed" move-assignment semantics of
unique_ptr - LWG2048: Unnecessary
mem_fnoverloads - LWG2049:
is_destructibleis underspecified - LWG2050: Unordered associative containers do not use
allocator_traitsto define member types - LWG2053: Errors in
regexbitmask types - LWG2056:
future_errcenums start with value 0 (invalid value forbroken_promise) - LWG2058:
valarrayandbegin/end - LWG2061:
make_move_iteratorand arrays - LWG2064: More
noexceptissues inbasic_string - LWG2065: Minimal allocator interface
- LWG2067:
packaged_taskshould have deleted copy c'tor with const parameter - LWG2069: Inconsistent exception spec for
basic_stringmove constructor - LWG2071:
std::valarraymove-assignment - LWG2074: Off by one error in
std::reverse_copy - LWG2075: Progress guarantees, lock-free property, and scheduling assumptions
- LWG2078: Throw specification of
async()incomplete - LWG2080: Specify when
once_flagbecomes invalid - LWG2081: Allocator requirements should include
CopyConstructible - LWG2083:
const-qualification onweak_ptr::owner_before - LWG2085: Wrong description of effect 1 of
basic_istream::ignore - LWG2086: Overly generic type support for math functions
- LWG2087:
iostream_category()andnoexcept - LWG2091: Misplaced effect in
m.try_lock_for() - LWG2092: Vague Wording for
condition_variable_any - LWG2093: Throws clause of
condition_variable::waitwith predicate - LWG2094:
durationconversion overflow shouldn't participate in overload resolution - LWG2096: Incorrect constraints of
future::getin regard toMoveAssignable - LWG2097:
packaged_taskconstructors should be constrained - LWG2098:
promisethrows clauses - LWG2099: Unnecessary constraints of
va_start()usage - LWG2100: Timed waiting functions cannot timeout if
launch::asyncpolicy used - LWG2102: Why is
std::launchan implementation-defined type? - LWG2103:
std::allocator_traits<std::allocator<T>>::propagate_on_container_move_assignment - LWG2104:
unique_lockmove-assignment should not benoexcept - LWG2105: Inconsistent requirements on
const_iterator'svalue_type - LWG2109: Incorrect requirements for
hashspecializations - LWG2110:
removecan't swap but note says it might - LWG2112: User-defined classes that cannot be derived from
- LWG2120: What should
asyncdo if neitherasyncnordeferredis set in policy? - LWG2122:
merge()stability for lists versus forward lists - LWG2123:
merge()allocator requirements for lists versus forward lists - LWG2128: Absence of global functions
cbegin/cend - LWG2130: missing ordering constraints for fences
- LWG2132:
std::functionambiguity - LWG2135: Unclear requirement for exceptions thrown in
condition_variable::wait() - LWG2138:
atomic_flag::clearordering constraints - LWG2140:
notify_all_at_thread_exitsynchronization - LWG2141:
common_typetrait produces reference types - LWG2142:
packaged_task::operator()synchronization too broad? - LWG2143:
ios_base::xallocshould be thread-safe - LWG2144: Missing
noexceptspecification intype_index - LWG2145:
error_categorydefault constructor - LWG2147: Unclear hint type in
Allocator'sallocatefunction - LWG2148: Hashing enums should be supported directly by
std::hash - LWG2149: Concerns about 20.8/5
- LWG2150: Unclear specification of
find_end - LWG2159:
atomic_flaginitialization - LWG2162:
allocator_traits::max_sizemissingnoexcept - LWG2163:
nth_elementrequires inconsistent post-conditions - LWG2169: Missing
reset()requirements inunique_ptrspecialization - LWG2172: Does
atomic_compare_exchange_*acceptv == nullptrarguments? - LWG2174:
wstring_convert::converted()should benoexcept - LWG2175:
string_convertandwbuffer_convertvalidity - LWG2176: Special members for
wstring_convertandwbuffer_convert - LWG2177: Requirements on
Copy/MoveInsertable - LWG2180: Exceptions from
std::seed_seqoperations - LWG2182:
Container::[const_]referencetypes are misleadingly specified - LWG2185: Missing throws clause for
future/shared_future::wait_for/wait_until - LWG2186: Incomplete action on
async/launch::deferred - LWG2187:
vector<bool>is missingemplaceandemplace_backmember functions - LWG2188: Reverse iterator does not fully support targets that overload
operator& - LWG2190: ordering of condition variable operations, reflects
Posixdiscussion - LWG2193: Default constructors for standard library containers are explicit
- LWG2194: Impossible container requirements for adaptor types
- LWG2196: Specification of
is_*[copy/move]_[constructible/assignable]unclear for non-referencable types - LWG2197: Specification of
is_[un]signedunclear for non-arithmetic types - LWG2200: Data race avoidance for all containers, not only for sequences
- LWG2203:
scoped_allocator_adaptoruses wrong argument types for piecewise construction - LWG2205: Problematic postconditions of
regex_matchandregex_search - LWG2207:
basic_string::atshould not have a Requires clause - LWG2209:
assign()overspecified for sequence containers - LWG2210: Missing allocator-extended constructor for allocator-aware containers
- LWG2211: Replace ambiguous use of "Allocator" in container requirements
- LWG2213: Return value of
std::regex_replace - LWG2222: Inconsistency in description of
forward_list::splice_aftersingle-element overload - LWG2225: Unrealistic header inclusion checks required
- LWG2229: Standard code conversion facets underspecified
- LWG2231: DR 704 removes complexity guarantee for
clear() - LWG2235: Undefined behavior without proper requirements on
basic_stringconstructors - LWG2240: Probable misuse of term "function scope" in [thread.condition]
- LWG2246:
unique_ptrassignment effects w.r.t. deleter - LWG2247: Type traits and
std::nullptr_t - LWG2252: Strong guarantee on
vector::push_back()still broken with C++11? - LWG2257: Simplify container requirements with the new algorithms
- LWG2258:
a.erase(q1, q2)unable to directly returnq2 - LWG2263: Comparing iterators and allocator pointers with different const-character
- LWG2268: Setting a default argument in the declaration of a member function assign of
std::basic_string - LWG2271:
regex_traits::lookup_classnamespecification unclear - LWG2272: quoted should use
char_traits::eqfor character comparison - LWG2275: Why is
forward_as_tuplenotconstexpr? - LWG2278: User-defined literals for Standard Library types
- LWG2280:
begin/endfor arrays should beconstexprandnoexcept - LWG2284: Inconsistency in
allocator_traits::max_size - LWG2285:
make_reverse_iterator - LWG2288: Inconsistent requirements for shared mutexes
- LWG2291:
std::hashis vulnerable to collision DoS attack - LWG2293: Wrong facet used by
num_put::do_put - LWG2298:
is_nothrow_constructibleis always false because ofcreate<> - LWG2299: Effects of inaccessible
key_compare::is_transparenttype are not clear - LWG2300: Redundant sections for
mapandmultimapmembers should be removed - LWG2301: Why is
std::tienot constexpr? - LWG2304: Complexity of count in unordered associative containers
- LWG2306:
match_results::referenceshould bevalue_type&, not constvalue_type& - LWG2308: Clarify container destructor requirements w.r.t.
std::array - LWG2313:
tuple_sizeshould always derive fromintegral_constant - LWG2314:
apply()should returndecltype(auto)and usedecay_tbeforetuple_size - LWG2315:
weak_ptrshould be movable - LWG2316:
weak_ptr::lock()should be atomic - LWG2317: The type property queries should be
UnaryTypeTraitsreturningsize_t - LWG2320:
select_on_container_copy_construction()takes allocators, not containers - LWG2322:
Associative(initializer_list, stuff)constructors are underspecified - LWG2323:
vector::resize(n, t)'s specification should be simplified - LWG2324: Insert
iteratorconstructors should useaddressof() - LWG2329:
regex_match()/regex_search()withmatch_resultsshould forbid temporary strings - LWG2330:
regex("meow", regex::icase)is technically forbidden but should be permitted - LWG2332:
regex_iterator/regex_token_iteratorshould forbid temporary regexes - LWG2339: Wording issue in
nth_element - LWG2341: Inconsistency between
basic_ostream::seekp(pos)andbasic_ostream::seekp(off, dir) - LWG2344:
quoted()'s interaction with padding is unclear - LWG2346:
integral_constant's member functions should be markednoexcept - LWG2350:
min,max, andminmaxshould beconstexpr - LWG2356: Stability of erasure in unordered associative containers
- LWG2357: Remaining
Assignablerequirement - LWG2359: How does
regex_constants::nosubsaffectbasic_regex::mark_count()? - LWG2360:
reverse_iterator::operator*()is unimplementable - GB9: Remove
getsfrom C++14
- N3911: TransformationTrait Alias
void_t. - N4089: Safe conversions in
unique_ptr<T[]>. - N4169: A proposal to add
invokefunction template - N4190: Removing
auto_ptr,random_shuffle(), And Old Stuff. - N4258: Cleaning-up noexcept in the Library.
- N4259: Wording for
std::uncaught_exceptions - N4277:
TriviallyCopyablereference_wrapper. - N4279: Improved insertion interface for unique-key maps.
- N4280: Non-member
size()and more - N4284: Contiguous Iterators.
- N4285: Cleanup for exception-specification and throw-expression.
- N4387: improving
pairandtuple - N4389:
bool_constant - N4508:
shared_mutexfor C++17 - N4366: LWG 2228 missing SFINAE rule
- N4510: Minimal incomplete type support for standard containers, revision 4
- P0004: Remove Deprecated iostreams aliases.
- P0006: Adopt Type Traits Variable Templates for C++17.
- P0092: Polishing
<chrono> - P0007: Constant View: A proposal for a
std::as_consthelper function template. - P0156: Variadic
lock_guard(rev 3). Reverted in Kona - P0074: Making
std::owner_lessmore flexible - P0013: Logical Operator Type Traits
- P0024: The Parallelism TS Should be Standardized
- P0226: Mathematical Special Functions for C++17
- P0220: Adopt Library Fundamentals V1 TS Components for C++17
- P0218: Adopt the File System TS for C++17
- P0033: Re-enabling
shared_from_this - P0005: Adopt
not_fnfrom Library Fundamentals 2 for C++17 - P0152:
constexpr atomic::is_always_lock_free - P0185: Adding [nothrow-]swappable traits
- P0253: Fixing a design mistake in the searchers interface
- P0025: An algorithm to "clamp" a value between a pair of boundary values
- P0154:
constexpr std::hardware_{constructive,destructive}_interference_size - P0030: Proposal to Introduce a 3-Argument Overload to
std::hypot - P0031: A Proposal to Add Constexpr Modifiers to
reverse_iterator,move_iterator,arrayandRangeAccess - P0272: Give
std::stringa non-const.data()member function - P0077:
is_callable, the missingINVOKErelated trait - P0032: Homogeneous interface for
variant,anyandoptional - P0040: Extending memory management tools
- P0063: C++17 should refer to C11 instead of C99
- P0067: Elementary string conversions (P0067R5)
- P0083: Splicing Maps and Sets
- P0084: Emplace Return Type
- P0088: Variant: a type-safe
unionfor C++17 - P0137: Core Issue 1776: Replacement of class objects containing reference members
- P0163:
shared_ptr::weak_type - P0174: Deprecating Vestigial Library Parts in C++17
- P0175: Synopses for the C library
- P0180: Reserve a New Library Namespace for Future Standardization
- P0209:
make_from_tuple:applyfor construction - P0219: Relative Paths for Filesystem
- P0254: Integrating
std::string_viewandstd::string - P0258:
has_unique_object_representations - P0295: Adopt Selected Library Fundamentals V2 Components for C++17
- P0302: Removing Allocator Support in
std::function - P0307: Making Optional Greater Equal Again
- P0336: Better Names for Parallel Execution Policies in C++17
- P0337: Delete
operator=forpolymorphic_allocator - P0346: A
<random>Nomenclature Tweak - P0358: Fixes for
not_fn - P0371: Temporarily discourage
memory_order_consume - P0392: Adapting
string_viewby filesystem paths - P0393: Making Variant Greater Equal
- P0394: Hotel Parallelifornia:
terminate()for Parallel Algorithms Exception Handling - P0003: Removing Deprecated Exception Specifications from C++17
- P0067: Elementary string conversions, revision 5
- P0403: Literal suffixes for
basic_string_view - P0414: Merging
shared_ptrchanges from Library Fundamentals to C++17 - P0418: Fail or succeed: there is no atomic lattice
- P0426: Constexpr for
std::char_traits - P0435: Resolving LWG Issues re
common_type - P0502: Throwing out of a parallel algorithm terminates - but how?
- P0503: Correcting library usage of "literal type"
- P0504: Revisiting in-place tag types for
any/optional/variant - P0505: Wording for GB 50 - constexpr for
chrono - P0508: Wording for GB 58 - structured bindings for
node_handles - P0509: Updating "Restrictions on exception handling"
- P0510: Disallowing references, incomplete types, arrays, and empty variants
- P0513: Poisoning the Hash
- P0516: Clarify That
shared_future's Copy Operations have Wide Contracts - P0517: Make
future_errorConstructible - P0521: Proposed Resolution for CA 14 (
shared_ptruse_count/unique) - P0156: Variadic Lock guard(rev 5)
- P0270: Removing C dependencies from signal handler wording
- P0298: A byte type definition
- P0317: Directory Entry Caching for Filesystem
- P0430: File system library on non-POSIX-like operating systems
- P0433: Toward a resolution of US7 and US14: Integrating template deduction for class templates into the standard library
- P0452: Unifying
<numeric>Parallel Algorithms - P0467: Iterator Concerns for Parallel Algorithms
- P0492: Proposed Resolution of C++17 National Body Comments for Filesystems
- P0518: Allowing copies as arguments to function objects given to parallel algorithms in response to CH11
- P0523: Wording for CH 10: Complexity of parallel algorithms
- P0548:
common_typeandduration - P0558: Resolving
atomic<T>named base class inconsistencies - P0574: Algorithm Complexity Constraints and Parallel Overloads
- P0599:
noexceptfor hash functions - P0604: Resolving GB 55, US 84, US 85, US 86
- P0607: Inline Variables for the Standard Library
- P0618: Deprecating
<codecvt> - P0623: Final C++17 Parallel Algorithms Fixes
- P0682: Repairing elementary string conversions
- P0739: Some improvements to class template argument deduction integration into the standard library
- LWG2016:
Allocatorsmust be no-throw swappable - LWG2118:
unique_ptrforarraydoes not support cv qualification conversion of actual argument - LWG2170: Aggregates cannot be
DefaultConstructible - LWG2308: Clarify container destructor requirements w.r.t.
std::array - LWG2340: Replacement allocation functions declared as
inline - LWG2354: Unnecessary copying when inserting into maps with braced-init syntax
- LWG2377:
std::alignrequirements overly strict - LWG2396:
underlying_typedoesn't say what to do for an incomplete enumeration type - LWG2399:
shared_ptr's constructor fromunique_ptrshould be constrained - LWG2400:
shared_ptr'sget_deleter()should useaddressof() - LWG2401:
std::functionneeds morenoexcept - LWG2404:
mismatch()'s complexity needs to be updated - LWG2408: SFINAE-friendly
common_type/iterator_traitsis missing in C++14 - LWG2106:
move_iteratorwrapping iterators returning prvalues - LWG2129: User specializations of
std::initializer_list - LWG2212:
tuple_sizefor const pair request header - LWG2217:
operator==(sub_match, string)slices on embedded '\0's - LWG2230: "see below" for
initializer_listconstructors of unordered containers - LWG2233:
bad_function_call::what()unhelpful - LWG2266:
vectoranddequehave incorrectinsertrequirements - LWG2325:
minmax_element()'s behavior differing frommax_element()'s should be noted - LWG2361: Apply 2299 resolution throughout library
- LWG2365: Missing
noexceptinshared_ptr::shared_ptr(nullptr_t) - LWG2376:
bad_weak_ptr::what()overspecified - LWG2387: More nested types that must be accessible and unambiguous
- LWG2059: C++0x ambiguity problem with
map::erase - LWG2063: Contradictory requirements for string move assignment
- LWG2076: Bad
CopyConstructiblerequirement in set constructors - LWG2160: Unintended destruction ordering-specification of resize
- LWG2168: Inconsistent specification of
uniform_real_distributionconstructor - LWG2239:
min/max/minmaxrequirements - LWG2364:
dequeandvectorpop_backdon't specify iterator invalidation requirements - LWG2369:
constexpr max(initializer_list)vsmax_element - LWG2378: Behaviour of standard exception types
- LWG2403:
stof()should callstrtof()andwcstof() - LWG2406:
negative_binomial_distributionshould rejectp == 1 - LWG2407:
packaged_task(allocator_arg_t, const Allocator&, F&&)should neither be constrained norexplicit - LWG2411:
shared_ptris only contextually convertible tobool - LWG2415: Inconsistency between
unique_ptrandshared_ptr - LWG2420:
function<void(ArgTypes...)>does not discard the return value of the target object - LWG2425:
operator delete(void*, size_t)doesn't invalidate pointers sufficiently - LWG2427: Container adaptors as sequence containers, redux
- LWG2428: "External declaration" used without being defined
- LWG2433:
uninitialized_copy()/etc. should tolerate overloadedoperator& - LWG2434:
shared_ptr::use_count()is efficient - LWG2437:
iterator_traits::referencecan and can't bevoid - LWG2438:
std::iteratorinheritance shouldn't be mandated - LWG2439:
unique_copy()sometimes can't fall back to reading its output - LWG2440:
seed_seq::size()should benoexcept - LWG2442:
call_once()shouldn'tDECAY_COPY() - LWG2448: Non-normative Container destructor specification
- LWG2454: Add
raw_storage_iterator::base()member - LWG2455: Allocator default construction should be allowed to throw
- LWG2458: N3778 and new library deallocation signatures
- LWG2459:
std::polarshould require a non-negative rho - LWG2464:
try_emplaceandinsert_or_assignmisspecified - LWG2467:
is_always_equalhas slightly inconsistent default - LWG2470: Allocator's destroy function should be allowed to fail to instantiate
- LWG2482: [c.strings] Table 73 mentions nonexistent functions
- LWG2488: Placeholders should be allowed and encouraged to be
constexpr - LWG1169:
num_getnot fully compatible withstrto* - LWG2072: Unclear wording about capacity of temporary buffers
- LWG2101: Some transformation types can produce impossible types
- LWG2111: Which
unexpected/terminatehandler is called from the exception handling runtime? - LWG2119: Missing
hashspecializations for extended integer types - LWG2127: Move-construction with
raw_storage_iterator - LWG2133: Attitude to overloaded comma for iterators
- LWG2156: Unordered containers'
reserve(n)reserves forn-1elements - LWG2218: Unclear how containers use
allocator_traits::construct() - LWG2219:
INVOKE-ing a pointer to member with areference_wrapperas the object expression - LWG2224: Ambiguous status of access to non-live objects
- LWG2234:
assert()should allow usage in constant expressions - LWG2244: Issue on
basic_istream::seekg - LWG2250: Follow-up On Library Issue 2207
- LWG2259: Issues in 17.6.5.5 rules for member functions
- LWG2273:
regex_matchambiguity - LWG2336:
is_trivially_constructible/is_trivially_assignabletraits are always false - LWG2353:
std::nextis over-constrained - LWG2367:
pairandtupleare not correctly implemented foris_constructiblewith no args - LWG2380: May
<cstdlib>providelong ::abs(long)andlong long ::abs(long long)? - LWG2384: Allocator's deallocate function needs better specification
- LWG2385:
function::assignallocator argument doesn't make sense - LWG2435:
reference_wrapper::operator()'s Remark should be deleted - LWG2447: Allocators and
volatile-qualified value types - LWG2462:
std::ios_base::failureis overspecified - LWG2466:
allocator_traits::max_size()default behavior is incorrect - LWG2469: Wrong specification of Requires clause of
operator[]formapandunordered_map - LWG2473:
basic_filebuf's relation to CFILEsemantics - LWG2476:
scoped_allocator_adaptoris not assignable - LWG2477: Inconsistency of wordings in
std::vector::erase()andstd::deque::erase() - LWG2483:
throw_with_nested()should useis_final - LWG2484:
rethrow_if_nested()is doubly unimplementable - LWG2485:
get()should be overloaded forconst tuple&& - LWG2486:
mem_fn()should be required to use perfect forwarding - LWG2487:
bind()should beconst-overloaded, not cv-overloaded - LWG2489:
mem_fn()should benoexcept - LWG2492: Clarify requirements for
comp - LWG2495: There is no such thing as an Exception Safety element
- LWG2192: Validity and return type of
std::abs(0u)is unclear - LWG2276: Missing requirement on
std::promise::set_exception - LWG2296:
std::addressofshould beconstexpr - LWG2450:
(greater|less|greater_equal|less_equal)<void>do not yield a total order for pointers - LWG2520: N4089 broke initializing
unique_ptr<T[]>from anullptr - LWG2523:
std::promisesynopsis shows twoset_value_at_thread_exit()'s for no apparent reason - LWG2537: Constructors for
priority_queuetaking allocators should callmake_heap - LWG2545: Simplify wording for
bindwithout explicitly specified return type - LWG2557: Logical operator traits are broken in the zero-argument case
- LWG2559: Error in LWG 2234's resolution
- LWG2560:
is_constructibleunderspecified when applied to a function type - LWG2565:
std::function's move constructor should guarantee nothrow forreference_wrappers and function pointers - LWG2566: Requirements on the first template parameter of container adaptors
- LWG2571:
[map.modifiers]/2imposes nonsensical requirement oninsert(InputIterator, InputIterator) - LWG2572: The remarks for
shared_ptr::operator*should apply to cv-qualified void as well - LWG2576:
istream_iteratorandostream_iteratorshould usestd::addressof - LWG2577:
{shared,unique}_lockshould usestd::addressof - LWG2579: Inconsistency wrt Allocators in
basic_stringassignment vs.basic_string::assign - LWG2581: Specialization of
<type_traits>variable templates should be prohibited - LWG2582:
[res.on.functions]/2's prohibition against incomplete types shouldn't apply to type traits - LWG2583: There is no way to supply an allocator for
basic_string(str, pos) - LWG2585:
forward_list::resize(size_type, const value_type&)effects incorrect - LWG2586: Wrong value category used in
scoped_allocator_adaptor::construct() - LWG2590: Aggregate initialization for
std::array - LWG2181: Exceptions from seed sequence operations
- LWG2309:
mutex::lock()should not throwdevice_or_resource_busy - LWG2310: Public exposition only member in
std::array - LWG2312:
tuple's constructor constraints need to be phrased more precisely - LWG2328: Rvalue stream extraction should use perfect forwarding
- LWG2393:
std::function'sCallabledefinition is broken - LWG2422:
std::numeric_limits<T>::is_modulo description: "most machines" errata - LWG2426: Issue about
compare_exchange - LWG2436: Comparators for associative containers should always be
CopyConstructible - LWG2441: Exact-width
atomictypedefs should be provided - LWG2451: [fund.ts.v2]
optional<T>shouldforwardT's implicit conversions - LWG2542: Missing
constrequirements for associative containers - LWG2549: Tuple EXPLICIT constructor templates that take
tupleparameters end up taking references to temporaries and will create dangling references - LWG2550: Wording of unordered container's
clear()method complexity - LWG2596:
vector::data()should useaddressof - LWG2667:
path::root_directory()description is confusing - LWG2669:
recursive_directory_iteratoreffects refers to non-existent functions - LWG2670:
system_completerefers to undefined variable 'base' - LWG2671: Errors in Copy
- LWG2673:
status()effects cannot be implemented as specified - LWG2674: Bidirectional iterator requirement on
path::iteratoris very expensive - LWG2683:
filesystem::copy()says "no effects" - LWG2684:
priority_queuelacking comparator typedef - LWG2685:
shared_ptrdeleters must not throw on move construction - LWG2687:
{inclusive,exclusive}_scanmisspecified - LWG2688:
clampmisses preconditions and has extraneous condition on result - LWG2689: Parallel versions of
std::copyandstd::moveshouldn't be in order - LWG2698: Effect of
assign()on iterators/pointers/references - LWG2704:
recursive_directory_iterator's members should require '*thisis dereferenceable' - LWG2706: Error reporting for
recursive_directory_iterator::pop()is under-specified - LWG2707:
pathconstruction and assignment should havestring_type&&overloads - LWG2709:
offsetofis unnecessarily imprecise - LWG2710: "Effects: Equivalent to ..." doesn't count "Synchronization:" as determined semantics
- LWG2711:
pathis convertible from approximately everything under the sun - LWG2716: Specification of
shuffleandsampledisallows lvalue URNGs - LWG2718: Parallelism bug in [algorithms.parallel.exec] p2
- LWG2719:
permissionsfunction should not benoexceptdue to narrow contract - LWG2720:
permissionsfunction incorrectly specified for symlinks - LWG2721:
remove_allhas incorrect post conditions - LWG2723: Do
directory_iteratorandrecursive_directory_iteratorbecome the end iterator upon error? - LWG2724: The protected virtual member functions of
memory_resourceshould be private - LWG2725:
filesystem::exists(const path&, error_code&)error reporting - LWG2726:
[recursive_]directory_iterator::increment(error_code&)is underspecified - LWG2727: Parallel algorithms with
constexprspecifier - LWG2728:
status(p).permissions()andsymlink_status(p).permissions()are not specified - LWG2062: Effect contradictions w/o no-throw guarantee of
std::functionswaps - LWG2166: Heap property underspecified?
- LWG2221: No formatted output operator for
nullptr - LWG2223:
shrink_to_fiteffect on iterator validity - LWG2261: Are containers required to use their 'pointer' type internally?
- LWG2394:
locale::namespecification unclear - what is implementation-defined? - LWG2460: LWG issue 2408 and value categories
- LWG2468: Self-move-assignment of library types
- LWG2475: Allow overwriting of
std::basic_stringterminator withcharT()to allow cleaner interoperation with legacy APIs - LWG2503: multiline option should be added to
syntax_option_type - LWG2510: Tag types should not be
DefaultConstructible - LWG2514: Type traits must not be
final - LWG2519: Iterator
operator-=has gratuitous undefined behaviour - LWG2531:
future::getshould explicitly state that the shared state is released - LWG2534: Constrain rvalue stream operators
- LWG2536: What should
<complex.h>do? - LWG2540:
unordered_multimap::inserthint iterator - LWG2543: LWG 2148 (hash support for enum types) seems under-specified
- LWG2544:
istreambuf_iterator(basic_streambuf* s)effects unclear whensis0 - LWG2556: Wide contract for
future::share() - LWG2562: Consistent total ordering of pointers by comparison functors
- LWG2567: Specification of logical operator traits uses
BaseCharacteristic, which is defined only forUnaryTypeTraitsandBinaryTypeTraits - LWG2569:
conjunctionanddisjunctionrequirements are too strict - LWG2578: Iterator requirements should reference iterator traits
- LWG2584:
<regex>ECMAScriptIdentityEscapeis ambiguous - LWG2587: "Convertible to
bool" requirement inconjunctionanddisjunction - LWG2589:
match_resultscan't satisfy the requirements of a container - LWG2591:
std::function's member templatetarget()should not lead to undefined behaviour - LWG2598:
addressofworks on temporaries - LWG2664:
operator/(and other append) semantics not useful if argument has root - LWG2665:
remove_filename()post condition is incorrect - LWG2672: Should
is_emptyuseerror_codein its specification? - LWG2678:
std::filesystemenum classes overspecified - LWG2679: Inconsistent Use of Effects and Equivalent To
- LWG2680: Add "Equivalent to" to filesystem
- LWG2681:
filesystem::copy()cannot copy symlinks - LWG2682:
filesystem::copy()won't create a symlink to a directory - LWG2686: Why is
std::hashspecialized forerror_code, but noterror_condition? - LWG2694: Application of LWG 436 accidentally deleted definition of "facet"
- LWG2696: Interaction between
make_sharedandenable_shared_from_thisis underspecified - LWG2699: Missing restriction in [numeric.requirements]
- LWG2712:
copy_file(from, to, ...)has a number of unspecified error conditions - LWG2722:
equivalentincorrectly specifies throws clause - LWG2729: Missing SFINAE on
std::pair::operator= - LWG2732: Questionable specification of
path::operator/=andpath::append - LWG2735:
std::abs(short),std::abs(signed char)and others should return int instead ofdoublein order to be compatible with C++98 and C - LWG2736:
nullopt_tinsufficiently constrained - LWG2738:
is_constructiblewithvoidtypes - LWG2739: Issue with
time_pointnon-member subtraction with an unsigned duration - LWG2740:
constexpr optional::operator-> - LWG2742: Inconsistent string interface taking
string_view - LWG2744:
any'sin_placeconstructors - LWG2747: Possibly redundant
std::movein [alg.foreach] - LWG2748:
swappabletraits for optionals - LWG2749:
swappabletraits for variants - LWG2752: "Throws:" clauses of
asyncandpackaged_taskare unimplementable - LWG2755: [string.view.io] uses non-existent
basic_string_view::to_stringfunction - LWG2756: C++ WP optional should
forwardT's implicit conversions - LWG2758:
std::string{}.assign("ABCDE", 0, 1)is ambiguous - LWG2759:
gcd/lcmandboolfor the WP - LWG2760: non-
constbasic_string::datashould not invalidate iterators - LWG2765: Did LWG 1123 go too far?
- LWG2767:
not_fncall_wrappercan form invalid types - LWG2769: Redundant const in the return type of
any_cast(const any&) - LWG2771: Broken Effects of some
basic_string::comparefunctions in terms ofbasic_string_view - LWG2773: Making
std::ignoreconstexpr - LWG2777:
basic_string_view::copyshould usechar_traits::copy - LWG2778:
basic_string_viewis missingconstexpr - LWG2260: Missing requirement for
Allocator::pointer - LWG2676: Provide
filesystem::pathoverloads for File-based streams - LWG2768:
any_castand move semantics - LWG2769: Redundant
constin the return type ofany_cast(const any&) - LWG2781: Contradictory requirements for
std::functionandstd::reference_wrapper - LWG2782:
scoped_allocator_adaptorconstructors must be constrained - LWG2784: Resolution to LWG 2484 is missing "otherwise, no effects" and is hard to parse
- LWG2785:
quotedshould work withbasic_string_view - LWG2786: Annex C should mention
shared_ptrchanges for array support - LWG2787:
[file_status.cons]doesn't match class definition - LWG2788:
basic_stringrange mutators unintentionally require a default constructible allocator - LWG2789: Equivalence of contained objects
- LWG2790: Missing specification of
istreambuf_iterator::operator-> - LWG2794: Missing requirements for allocator pointers
- LWG2795:
[global.functions]provides incorrect example of ADL use - LWG2796:
tupleshould be a literal type - LWG2801: Default-constructibility of
unique_ptr - LWG2802:
shared_ptrconstructor requirements for a deleter - LWG2804: Unconditional
constexprdefault constructor foristream_iterator - LWG2806: Base class of
bad_optional_access - LWG2807:
std::invokeshould usestd::is_nothrow_callable - LWG2812: Range access is available with
<string_view> - LWG2824:
list::sortshould say that the order of elements is unspecified if an exception is thrown - LWG2826:
string_viewiterators use old wording - LWG2834: Resolution LWG 2223 is missing wording about end iterators
- LWG2835: LWG 2536 seems to misspecify
<tgmath.h> - LWG2837:
gcdandlcmshould support a wider range of input values - LWG2838:
is_literal_typespecification needs a little cleanup - LWG2842:
in_place_tcheck foroptional::optional(U&&)should decayU - LWG2850:
std::functionmove constructor does unnecessary work - LWG2853: Possible inconsistency in specification of erase in
[vector.modifiers] - LWG2855:
std::throw_with_nested("string_literal") - LWG2857:
{variant,optional,any}::emplaceshould return the constructed value - LWG2861:
basic_stringshould require thatcharTmatchtraits::char_type - LWG2866: Incorrect derived classes constraints
- LWG2868: Missing specification of
bad_any_cast::what() - LWG2872: Add definition for direct-non-list-initialization
- LWG2873: Add
noexceptto severalshared_ptrrelated functions - LWG2874: Constructor
shared_ptr::shared_ptr(Y*)should be constrained - LWG2875:
shared_ptr::shared_ptr(Y*, D, [...])constructors should be constrained - LWG2876:
shared_ptr::shared_ptr(const weak_ptr<Y>&)constructor should be constrained - LWG2878: Missing
DefaultConstructiblerequirement foristream_iteratordefault constructor - LWG2890: The definition of 'object state' applies only to class types
- LWG2900: The copy and move constructors of optional are not
constexpr - LWG2903: The form of initialization for the emplace-constructors is not specified
- LWG2904: Make variant move-assignment more exception safe
- LWG2905:
is_constructible_v<unique_ptr<P, D>, P, D const &>should be false whenDis not copy constructible - LWG2908: The less-than operator for shared pointers could do more
- LWG2911: An
is_aggregatetype trait is needed - LWG2921:
packaged_taskand type-erased allocators - LWG2934:
optional<const T>doesn't compare withT - LWG2901: Variants cannot properly support allocators
- LWG2955:
to_chars/from_charsdepend onstd::string(P0682R1) - LWG2956:
filesystem::canonical()still defined in terms ofabsolute(p, base)
- P0463:
endian, justendian - P0674: Extending
make_sharedto Support Arrays - P0020: Floating Point Atomic
- P0053: C++ Synchronized Buffered Ostream
- P0202: Add constexpr modifiers to functions in
<algorithm>and<utility>Headers - P0415: Constexpr for
std::complex - P0439: Make
std::memory_ordera scoped enumeration - P0457: String Prefix and Suffix Checking
- P0550: Transformation Trait
remove_cvref - P0600:
nodiscardin the Library - P0616: de-pessimize legacy algorithms with
std::move - P0653: Utility to convert a pointer to a raw pointer
- P0718: Atomic
shared_ptr - P0767: Deprecate POD
- P0768: Library Support for the Spaceship (Comparison) Operator
- P0777: Treating Unnecessary
decay - P0122:
<span> - P0355: Extending chrono to Calendars and Time Zones
- P0551: Thou Shalt Not Specialize
stdFunction Templates! - P0753: Manipulators for C++ Synchronized Buffered Ostream
- P0754:
<version> - P0809: Comparing Unordered Containers
- P0858: Constexpr iterator requirements
- P0905: Symmetry for spaceship
- P0966:
string::reserveShould Not Shrink - P0019: Atomic Ref
- P0458: Checking for Existence of an Element in Associative Containers
- P0475: LWG 2511: guaranteed copy elision for piecewise construction
- P0476: Bit-casting object representations
- P0528: The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange
- P0542: Support for contract based programming in C++
- P0556: Integral power-of-2 operations
- P0619: Reviewing Deprecated Facilities of C++17 for C++20
- P0646: Improving the Return Value of Erase-Like Algorithms
- P0722: Efficient sized delete for variable sized classes
- P0758: Implicit conversion traits and utility functions
- P0759:
fposRequirements - P0769: Add shift to
<algorithm> - P0788: Standard Library Specification in a Concepts and Contracts World
- P0879: Constexpr for swap and swap related functions Also resolves LWG issue 2800.
- P0887: The identity metafunction
- P0892:
explicit(bool) - P0898: Standard Library Concepts
- P0935: Eradicating unnecessarily
explicitdefault constructors from the standard library - P0941: Integrating feature-test macros into the C++ WD
- P1023:
constexprcomparison operators forstd::array - P1025: Update The Reference To The Unicode Standard
- P1120: Consistency improvements for
<=>and other comparison operators - P0318:
unwrap_ref_decayandunwrap_reference - P0356: Simplified partial function application
- P0357:
reference_wrapperfor incomplete types - P0482:
char8_t: A type for UTF-8 characters and strings - P0487: Fixing
operator>>(basic_istream&, CharT*)(LWG 2499) - P0591: Utility functions to implement uses-allocator construction
- P0595:
std::is_constant_evaluated() - P0602:
variantandoptionalshould propagate copy/move triviality - P0608: A sane
variantconverting constructor - P0655:
visit<R>: Explicit Return Type forvisit - P0771:
std::functionmove constructor should benoexcept - P0896: The One Ranges Proposal
- P0899: LWG 3016 is not a defect
- P0919: Heterogeneous lookup for unordered containers
- P0972:
<chrono>zero(),min(), andmax()should benoexcept - P1006: Constexpr in
std::pointer_traits - P1007:
std::assume_aligned - P1020: Smart pointer creation with default initialization
- P1032: Misc
constexprbits - P1085: Should Span be Regular?
- P1123: Editorial Guidance for merging P0019r8 and P0528r3
- P1148: Cleaning up Clause 20
- P1165: Make stateful allocator propagation more consistent for
operator+(basic_string) - P1209: Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20
- P1236: Alternative Wording for P0907R4 Signed Integers are Two's Complement
- P1248: Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations)
- P1285: Improving Completeness Requirements for Type Traits
- P1353: Missing feature test macros
- LWG2070:
allocate_sharedshould useallocator_traits<A>::construct(P0674R1) - LWG2444: Inconsistent complexity for
std::sort_heap - LWG2593: Moved-from state of Allocators
- LWG2597:
std::logmisspecified for complex numbers - LWG2783:
stack::emplace()andqueue::emplace()should returndecltype(auto) - LWG2932: Constraints on parallel algorithm implementations are underspecified
- LWG2937: Is
equivalent("existing_thing", "not_existing_thing")an error - LWG2940:
result_ofspecification also needs a little cleanup - LWG2942: LWG 2873's resolution missed
weak_ptr::owner_before - LWG2954: Specialization of the convenience variable templates should be prohibited
- LWG2961: Bad postcondition for
set_default_resource - LWG2966: Incomplete resolution of US 74
- LWG2974: Diagnose out of bounds
tuple_element/variant_alternative - LWG2870: Default value of parameter theta of polar should be dependent
- LWG2935: What should
create_directoriesdo when p already exists but is not a directory? - LWG2941: [thread.req.timing] wording should apply to both member and namespace-level functions
- LWG2944: LWG 2905 accidentally removed requirement that construction of the deleter doesn't throw an exception
- LWG2945: Order of template parameters in
optionalcomparisons - LWG2948:
unique_ptrdoes not defineoperator<<for stream output - LWG2950:
std::byteoperations are misspecified - LWG2952:
iterator_traitsshould work for pointers to cvT - LWG2953: LWG 2853 should apply to
deque::erasetoo - LWG2958: Moves improperly defined as deleted
- LWG2964: Apparently redundant requirement for
dynamic_pointer_cast - LWG2965: Non-existing
path::native_string()infilesystem_error::what()specification - LWG2972: What is
is_trivially_destructible_v? - LWG2976: Dangling
uses_allocatorspecialization forpackaged_task - LWG2977:
unordered_meow::merge()has incorrect Throws: clause - LWG2978: Hash support for
pmr::stringand friends - LWG2979:
aligned_unionshould require object types - LWG2980: Cannot
compare_exchangeempty pointers - LWG2981: Remove redundant deduction guides from standard library
- LWG2982: Making
size_typeconsistent in associative container deduction guides - LWG2988: Clause 32 cleanup missed one
typename - LWG2993:
reference_wrapperconversion fromT&& - LWG2998: Requirements on function objects passed to
{forward_,}list-specific algorithms - LWG3001:
weak_ptr::element_typeneedsremove_extent_t - LWG3024:
variant's copies must be deleted instead of disabled via SFINAE - LWG2164: What are the semantics of
vector.emplace(vector.begin(), vector.back())? - LWG2243:
istream::putbackproblem - LWG2816:
resize_filehas impossible postcondition - LWG2843: Unclear behavior of
std::pmr::memory_resource::do_allocate() - LWG2849: Why does
!is_regular_file(from)causecopy_fileto report a "file already exists" error? - LWG2851:
std::filesystemenum classes are now underspecified - LWG2946: LWG 2758's resolution missed further corrections
- LWG2969:
polymorphic_allocator::construct()shouldn't passresource() - LWG2975: Missing case for
pairconstruction in scoped and polymorphic allocators - LWG2989:
path's stream insertion operator lets you insert everything under the sun - LWG3000:
monotonic_memory_resource::do_is_equaluses dynamic_cast unnecessarily - LWG3004: string.capacity and vector.capacity should specify time complexity for
capacity() - LWG3005: Destruction order of arrays by
make_shared/allocate_sharedonly recommended? - LWG3007:
allocate_sharedshould rebind allocator to cv-unqualifiedvalue_typefor construction - LWG3009: Including
<string_view>doesn't providestd::size/empty/data - LWG3013:
(recursive_)directory_iteratorconstruction and traversal should not benoexcept - LWG3014: More
noexceptissues with filesystem operations - LWG3015:
copy_options::unspecifiedunderspecified - LWG3017: list splice functions should use
addressof - LWG3026:
filesystem::weakly_canonicalstill defined in terms ofcanonical(p, base) - LWG3030: Who shall meet the requirements of
try_lock? - LWG3034: P0767R1 breaks previously-standard-layout types
- LWG3035:
std::allocator's constructors should beconstexpr - LWG3039: Unnecessary
decayinthreadandpackaged_task - LWG3041: Unnecessary
decayinreference_wrapper - LWG3043: Bogus postcondition for
filesystem_errorconstructor - LWG3045:
atomic<floating-point>doesn't havevalue_typeordifference_type - LWG3048:
transform_reduce(exec, first1, last1, first2, init)discards execution policy - LWG3051: Floating point classifications were inadvertently changed in P0175
- LWG3075:
basic_stringneeds deduction guides frombasic_string_view - LWG2139: What is a user-defined type?
- LWG2970: Return type of
std::visitmisspecified - LWG3058: Parallel
adjacent_differenceshouldn't require creating temporaries - LWG3062: Unnecessary
decay_tinis_execution_policy_vshould beremove_cvref_t - LWG3067:
recursive_directory_iterator::popmust invalidate - LWG3074: Non-member functions for
valarrayshould only deduce from thevalarray - LWG3076:
basic_stringCTAD ambiguity - LWG3079: LWG 2935 forgot to fix the
existing_poverloads ofcreate_directory - LWG3080: Floating point
from_charspattern specification breaks round-tripping - LWG3083: What should
ios::iword(-1)do? - LWG3094:
[time.duration.io]p4makes surprising claims about encoding - LWG3100: Unnecessary and confusing "empty span" wording
- LWG3102: Clarify
spaniteratorandconst_iteratorbehavior - LWG3104: Fixing
durationdivision - LWG2183: Muddled allocator requirements for
match_resultsconstructors - LWG2184: Muddled allocator requirements for
match_resultsassignments - LWG2412:
promise::set_value()andpromise::get_future()should not race - LWG2499:
operator>>(basic_istream&, CharT*)makes it hard to avoid buffer overflows - LWG2682:
filesystem::copy()won't create a symlink to a directory - LWG2797: Trait precondition violations
- LWG2936: Path comparison is defined in terms of the generic format
- LWG2943: Problematic specification of the wide version of
basic_filebuf::open - LWG2995:
basic_stringbufdefault constructor forbids it from using SSO capacity - LWG2996: Missing rvalue overloads for
shared_ptroperations - LWG3008:
make_shared(sub)object destruction semantics are not specified - LWG3022:
is_convertible<derived*, base*>may lead to ODR - LWG3025: Map-like container deduction guides should use
pair<Key, T>, notpair<const Key, T> - LWG3031: Algorithms and predicates with non-const reference arguments
- LWG3037:
polymorphic_allocatorand incomplete types - LWG3038:
polymorphic_allocator::allocateshould not allow integer overflow to create vulnerabilities - LWG3054:
uninitialized_copyappears to not be able to meet its exception-safety guarantee - LWG3065: LWG 2989 missed that all
path's other operators should be hidden friends as well - LWG3096:
path::lexically_relativeis confused by trailing slashes - LWG3116:
OUTERMOST_ALLOC_TRAITS>needsremove_reference_t - LWG3122:
__cpp_lib_chrono_udlswas accidentally dropped - LWG3127:
basic_osyncstream::rdbufneeds aconst_cast - LWG3128:
strstream::rdbufneeds aconst_cast - LWG3129:
regex_token_iteratorconstructor uses wrong pointer arithmetic - LWG3130:
[input.output]needs manyaddressof - LWG3131:
addressofall the things - LWG3132: Library needs to ban macros named
expectsorensures - LWG3137: Header for
__cpp_lib_to_chars - LWG3145:
file_clockbreaks ABI for C++17 implementations - LWG3147: Definitions of "likely" and "unlikely" are likely to cause problems
- LWG3148:
<concepts>should be freestanding - LWG3153:
Commonandcommon_typehave too little in common - LWG3154:
CommonandCommonReferencehave a common defect