-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Description
(Previous meta-issue: #3214)
At the February 2023 meeting, the following LWG issues were resolved in the C++ Working Paper.
❔ Not yet analyzed
- Remaining issues:
❌ Not applicable
If an issue requires no action from implementers, we mark it as N/A. Categories:
- Pure wording clarifications with nothing to implement (these can be changes to non-normative text like examples and informative notes, or wording cleanups to normative text that don't impact observable behavior)
- LWG-3441 Misleading note about calls to customization points
- There's nothing to do here.
- LWG-3827 Deprecate
<stdalign.h>
and<stdbool.h>
macros- There's nothing for us to do here. These
<meow.h>
headers aren't part of the repo. Our<cstdalign>
does define__alignas_is_defined
and our<cstdbool>
gets__bool_true_false_are_defined
from<stdbool.h>
, but the<cmeow>
wrappers are already deprecated in C++17 mode (we didn't bother to implement removal in C++20 mode) and it's unclear how the UCRT could emit deprecation warnings for these macros. This isn't worth spending more time on, given that deprecation warnings aren't required for conformance (and we already go quite far here).
- There's nothing for us to do here. These
- LWG-3828 Sync
intmax_t
anduintmax_t
with C2x - LWG-3871 Adjust note about
terminate
- LWG-3441 Misleading note about calls to customization points
- Something that increases the restrictions placed on users, but implementers aren't expected to enforce those restrictions
- LWG-3622 Misspecified transitivity of equivalence in [unord.req.general]
- This is N/A because it increases restrictions on users without requiring implementers to enforce them.
- LWG-3645
resize_and_overwrite
is overspecified to call its callback with lvalues- There's nothing for implementers to do here (it merely increases the restrictions for users).
- LWG-3622 Misspecified transitivity of equivalence in [unord.req.general]
- Fixes for obviously broken wording, where implementers would have done the right thing anyways
- LWG-3032
ValueSwappable
requirement missing forpush_heap
andmake_heap
- LWG-3756 Is the
std::atomic_flag
class signal-safe? - LWG-3841
<version>
should not be "all freestanding" - LWG-3843
std::expected<T, E>::value() &
assumesE
is copy constructible- This is "naturally enforced" (as we attempt to copy) and the error messages should be sufficiently clear.
- LWG-3032
😸 Already implemented
Sometimes we cite LWG issues in product code comments as we're implementing their proposed resolutions. When the resolutions are officially accepted, we should remove the citations (as the default assumption is that we're implementing what the Standard says). If something is especially subtle, we can convert the citation to mention the relevant Standard section. Sometimes we should add test coverage - e.g. when the Standard begins requiring something that we were already doing, but weren't explicitly testing for.
- Already implemented, comments need to be removed and messages need to cite the Standard
- LWG-3085
char_traits::copy
precondition too weak - LWG-3664 LWG-3392 broke
std::ranges::distance(a, a + 3)
- LWG-3723
priority_queue::push_range
needs toappend_range
- LWG-3742
deque::prepend_range
needs to permute - LWG-3807 The feature test macro for
ranges::find_last
should be renamed - LWG-3857
basic_string_view
should allow explicit conversion when only traits vary - LWG-3867 Should
std::basic_osyncstream
's move assignment operator benoexcept
?- Created PR Uncomment resolutions of applied LWG issues #3461 for all of these.
- LWG-3085
- Implemented without comments
- LWG-3811
views::as_const
onref_view<T>
should returnref_view<const T>
- Noted as implemented by P2278R4:
views::as_const
#3234.
- Noted as implemented by P2278R4:
- LWG-3825 Missing compile-time argument
id
check inbasic_format_parse_context::next_arg_id
- Implemented by <format>: compile time checks #2221.
- LWG-3842 Unclear wording for precision in chrono-format-spec
- Implemented:
Lines 5301 to 5313 in 9ae1b3f
if constexpr (_Is_specialization_v<_Ty, duration>) { if constexpr (!treat_as_floating_point_v<typename _Ty::rep>) { if (_Specs._Precision != -1) { _THROW(format_error("Precision specification invalid for chrono::duration type with " "integral representation type, see N4885 [time.format]/1.")); } } } else { if (_Specs._Precision != -1) { _THROW(format_error("Precision specification invalid for non-chrono::duration type, " "see N4885 [time.format]/1.")); } } - We go beyond the Standard by using
treat_as_floating_point_v
. I think this is a remaining (small) defect in the Standardese. - When a new Working Paper is available, we could update the Standardese citation, but this is not absolutely necessary (as the stable name and paragraph number are unchanged, and the content of the paragraph hasn't changed that much).
- Implemented:
- LWG-3866 Bad Mandates for
expected::transform_error
overloads- Implemented by Implement P2505R5 Monadic Functions For std::expected #3361.
- LWG-3811
🩹 Patches an unimplemented feature
We should record this LWG issue in the GitHub issue tracking the feature. That way, we'll remember to verify it, but it doesn't represent net new work.
- Recorded in P0533R9
constexpr
For<cmath>
And<cstdlib>
#2530:- LWG-3834 Missing
constexpr
forstd::intmax_t
math functions in<cinttypes>
- LWG-3834 Missing
- Recorded in P2255R2 Type Traits To Detect References Binding To Temporaries #2534:
- LWG-3819
reference_
meow
s_from_temporary
should not useis_
meow
ible
- LWG-3819
- Recorded in P0009R18
<mdspan>
#2909:- LWG-3876 Default constructor of
std::layout_
meow
::mapping
misses precondition
- LWG-3876 Default constructor of
- Recorded in P0429R9
<flat_map>
#2910 and P1222R4<flat_set>
#2912: - Recorded in P1222R4
<flat_set>
#2912:- LWG-3879
erase_if
forflat_{,multi}set
is incorrectly specified
- LWG-3879
- Recorded in P2286R8 Formatting Ranges #2919:
- Recorded in P2374R4
views::cartesian_product
#2923: - Recorded in P1467R9 Extended Floating-Point Types #2956:
- LWG-3790 WG21-P1467R9 accidentally changed
nexttoward
's signature
- LWG-3790 WG21-P1467R9 accidentally changed
🐞 Not yet implemented
- Filed a GitHub issue labeled LWG
- LWG-2195 Missing constructors for
match_results
- LWG-2295 Locale name when the provided
Facet
is anullptr
- LWG-3204
sub_match::swap
only swaps the base class - LWG-3631
basic_format_arg(T&&)
should useremove_cvref_t<T>
throughout- Filed LWG-3631
basic_format_arg(T&&)
should useremove_cvref_t<T>
throughout #3460 and noted in P2286R8 Formatting Ranges #2919 (we implement some but not all of the machinery this issue touches).
- Filed LWG-3631
- LWG-3655 The
INVOKE
operation andunion
types - LWG-3720 Restrict the valid types of arg-id for width and precision in std-format-spec
- LWG-3733
ranges::to
misusescpp17-input-iterator
- LWG-3734 Inconsistency in
inout_ptr
andout_ptr
for empty case - LWG-3769
basic_const_iterator::operator==
causes infinite constraint recursion - LWG-3821
uses_allocator_construction_args
should have overload forpair-like
- LWG-3833 Remove specialization
template<size_t N> struct formatter<const charT[N], charT>
- LWG-3836
std::expected<bool, E1>
conversion constructorexpected(const expected<U, G>&)
should take precedence overexpected(U&&)
withoperator bool
- LWG-3847
ranges::to
can still return views - LWG-3851
chunk_view::
inner-iterator
missing customiter_move
anditer_swap
- LWG-3853
basic_const_iterator<volatile int*>::operator->
is ill-formed - LWG-3860
range_common_reference_t
is missing - LWG-3862
basic_const_iterator
'scommon_type
specialization is underconstrained - LWG-3865 Sorting a range of
pair
s - LWG-3869 Deprecate
std::errc
constants related to UNIX STREAMS - LWG-3870 Remove
voidify
- LWG-3872
basic_const_iterator
should have customiter_move
- LWG-3875
std::ranges::repeat_view<T, IntegerClass>::
iterator
may be ill-formed - LWG-3877 Incorrect constraints on
const
-qualified monadic overloads forstd::expected
- LWG-3878
import std;
should guarantee initialization of standard iostreams objects - LWG-3880 Clarify
operator+=
complexity for{chunk,stride}_view::
iterator
- LWG-2195 Missing constructors for
- PR out for review
- LWG-3772
repeat_view
's piecewise constructor is missing preconditions- Implement an
_STL_VERIFY
check. - PR LWG-3772 repeat_view's piecewise constructor is missing Postconditions #3462.
- Implement an
- LWG-3810 CTAD for
std::basic_format_args
- LWG-3848
adjacent_view
,adjacent_transform_view
, andslide_view
missingbase
accessor - LWG-3850
views::as_const
onempty_view<T>
should returnempty_view<const T>
- LWG-3772
Metadata
Metadata
Assignees
Labels
Type
Projects
Status