Skip to content

Meta LWG issue: 2020-11 meeting #1446

@StephanTLavavej

Description

@StephanTLavavej

At the November 2020 virtual plenary meeting, the following LWG issues were resolved in the C++ Working Paper.

For each of these issues, we've determined whether they are:

✖️ 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-2743 P0083R3 node_handle private members missing "exposition only" comment
    • LWG-2820 Clarify <cstdint> macros
    • LWG-3143 monotonic_buffer_resource growth policy is unclear
    • LWG-3236 Random access iterator requirements lack limiting relational operators domain to comparing those from the same range
    • LWG-3249 There are no 'pointers' in [atomics.lockfree]
    • LWG-3265 move_iterator's conversions are more broken after P1207
      • Also superseded by LWG-3435 😸 which is already implemented.
    • LWG-3421 Imperfect ADL emulation for boolean-testable
    • LWG-3425 condition_variable_any fails to constrain its Lock parameters
    • LWG-3453 Generic code cannot call ranges::advance(i, s)
    • LWG-3461 convertible_to's description mishandles cv-qualified void
    • LWG-3476 thread and jthread constructors require that the parameters be move-constructible but never move construct the parameters
      • Removed unnecessary requirements that we weren't using and weren't enforcing.
  • Something that increases the restrictions placed on users, but implementers aren't expected to enforce those restrictions
    • LWG-3306 ranges::advance violates its preconditions
    • LWG-3419 [algorithms.requirements]/15 doesn't reserve as many rights as it intends to
  • Fixes for obviously broken wording, where implementers would have done the right thing anyways

😸 Already implemented

We used to record when issues were implemented (i.e. which VS update) although such bookkeeping is probably not necessary anymore.

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 removed by PR Remove comments for resolved LWG issues #1456:
    • LWG-3403 Domain of ranges::ssize(E) doesn't match ranges::size(E)
    • LWG-3405 common_view's converting constructor is bad, too
    • LWG-3406 elements_view::begin() and elements_view::end() have incompatible constraints
    • LWG-3420 cpp17-iterator should check that the type looks like an iterator first
    • LWG-3428 single_view's in place constructor should be explicit
    • LWG-3435 three_way_comparable_with<reverse_iterator<int*>, reverse_iterator<const int*>>
    • LWG-3446 indirectly_readable_traits ambiguity for types with both value_type and element_type
    • LWG-3447 Deduction guides for take_view and drop_view have different constraints
    • LWG-3450 The const overloads of take_while_view::begin/end are underconstrained
    • LWG-3465 compare_partial_order_fallback requires F < E
    • LWG-3467 bool can't be an integer-like type
    • LWG-3472 counted_iterator is missing preconditions
    • LWG-3482 drop_view's const begin should additionally require sized_range
    • LWG-3483 transform_view::iterator's difference is overconstrained
  • Already implemented without comments:
    • LWG-2731 Existence of lock_guard<MutexTypes...>::mutex_type typedef unclear
    • LWG-3195 What is the stored pointer value of an empty weak_ptr?
    • LWG-3368 Exactly when does size return end - begin?
    • LWG-3404 Finish removing subrange's conversions from pair-like
    • LWG-3434 ios_base never reclaims memory for iarray and parray
    • LWG-3437 __cpp_lib_polymorphic_allocator is in the wrong header
      • We define feature-test macros in <yvals_core.h> so they're available in all headers.
    • LWG-3455 Incorrect Postconditions on unique_ptr move assignment
    • LWG-3477 Simplify constraints for semiregular-box

🩹 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.

🪲 Not yet implemented

We should file a GitHub issue labeled LWG; see those existing examples.

Metadata

Metadata

Assignees

No one assigned

    Labels

    LWGLibrary Working Group issuemetaIssues about issues!resolvedSuccessfully resolved without a commit

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions