Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Meta LWG issue: 2020-11 meeting #1446

Closed
52 tasks done
StephanTLavavej opened this issue Nov 12, 2020 · 12 comments
Closed
52 tasks done

Meta LWG issue: 2020-11 meeting #1446

StephanTLavavej opened this issue Nov 12, 2020 · 12 comments
Labels
LWG Library Working Group issue meta Issues about issues! resolved Successfully resolved without a commit

Comments

@StephanTLavavej
Copy link
Member

StephanTLavavej commented Nov 12, 2020

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.

@StephanTLavavej StephanTLavavej added the LWG Library Working Group issue label Nov 12, 2020
@CaseyCarter

This comment has been minimized.

@miscco

This comment has been minimized.

miscco added a commit to miscco/STL that referenced this issue Nov 12, 2020
miscco added a commit to miscco/STL that referenced this issue Nov 12, 2020
@StephanTLavavej

This comment has been minimized.

@SuperWig

This comment has been minimized.

miscco added a commit to miscco/STL that referenced this issue Nov 12, 2020
@miscco

This comment has been minimized.

miscco added a commit to miscco/STL that referenced this issue Nov 12, 2020
@StephanTLavavej

This comment has been minimized.

@StephanTLavavej

This comment has been minimized.

@statementreply

This comment has been minimized.

@CaseyCarter

This comment has been minimized.

@StephanTLavavej
Copy link
Member Author

Thanks @statementreply and @CaseyCarter, I've applied your issue analysis. (LWG-3455 might actually be N/A but listing it as already implemented without comments is equally good.)

@CaseyCarter
Copy link
Member

LWG-3476 is N/A: it removes unnecessary requirements that we weren't using - because they're unnecessary - and the impetus for filing the issue is that we didn't want to enforce the silly requirements despite that they were Mandates.
LWG-3453 is N/A: it adds a single semantic requirement to the sentinel_for concept to support the assignment optimization in ranges::advance(iterator, sentinel).

LWG-3466 is unimplemented: it adds a precondition that the type argument for the promise/future/shared_future primary templates is a Cpp17Destructible object type. We should probably add static_assert(s) to those primary templates to reject array types and types for which is_destructible_v is false. Filed #1484 to track.

LWG-2839 is probably N/A, since we pay attention to self-assignment and self-swap when we implement types, but I suppose it couldn't hurt to have someone audit move assignments. Filed #1485 to track.

@StephanTLavavej StephanTLavavej added the resolved Successfully resolved without a commit label Nov 19, 2020
@StephanTLavavej
Copy link
Member Author

Thanks @CaseyCarter and everyone else for your work here - all issues have been properly categorized. 🎉 😺

@StephanTLavavej StephanTLavavej added the meta Issues about issues! label Oct 4, 2021
@StephanTLavavej StephanTLavavej changed the title November 2020 LWG issues Meta LWG issue: 2020-11 meeting Mar 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
LWG Library Working Group issue meta Issues about issues! resolved Successfully resolved without a commit
Projects
Status: Done
Development

No branches or pull requests

5 participants