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

[LWG 1] P3504R0 C++ Standard Library Ready Issues #7459

Open
wants to merge 35 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
2a43f62
LWG3436 std::construct_at should support arrays
burblebee Nov 28, 2024
1ef0eb3
LWG3899 co_yielding elements of an lvalue generator is unnecessarily …
burblebee Nov 28, 2024
a5f24f3
LWG3900 The allocator_arg_t overloads of generator::promise_type::ope…
burblebee Nov 28, 2024
8dc94df
LWG3918 std::uninitialized_move/_n and guaranteed copy elision
burblebee Nov 28, 2024
562a3be
LWG4014 LWG 3809 changes behavior of some existing std::subtract_with…
burblebee Nov 28, 2024
63bf48b
LWG4024 Underspecified destruction of objects created in std::make_sh…
burblebee Nov 28, 2024
0cc6ae5
LWG4027 possibly-const-range should prefer returning const R&
burblebee Nov 28, 2024
60e8aa7
LWG4044 Confusing requirements for std::print on POSIX platforms
burblebee Nov 28, 2024
a77c52d
LWG4064 Clarify that std::launder is not needed when using the result…
burblebee Nov 28, 2024
4ed7697
LWG4072 std::optional comparisons: constrain harder
burblebee Nov 28, 2024
8aa46dc
LWG4085 ranges::generate_random's helper lambda should specify the re…
burblebee Nov 28, 2024
136065f
LWG4112 has-arrow should required operator->() to be const-qualified
burblebee Nov 28, 2024
4dc10a5
LWG4134 Issue with Philox algorithm specification
burblebee Nov 28, 2024
2137507
LWG4154 The Mandates for std::packaged_task's constructor from a call…
burblebee Nov 28, 2024
71b9526
LWG4164 Missing guarantees for forward_list modifiers
burblebee Nov 28, 2024
de80974
LWG3216 Rebinding the allocator before calling construct/destroy in a…
burblebee Nov 28, 2024
3edfff7
LWG3886 Monad mo' problems
burblebee Nov 28, 2024
30068ea
LWG4084 std::fixed ignores std::uppercase
burblebee Nov 28, 2024
0ec58e8
LWG4088 println ignores the locale imbued in std::ostream
burblebee Nov 28, 2024
d44cfff
LWG4113 Disallow has_unique_object_representations<Incomplete[]>
burblebee Nov 28, 2024
21f988b
LWG4119 generator::promise_type::yield_value(ranges::elements_of<R, A…
burblebee Nov 28, 2024
c1445bc
LWG4124 Cannot format zoned_time with resolution coarser than seconds
burblebee Nov 28, 2024
3ed48ae
LWG4126 Some feature-test macros for fully freestanding features are …
burblebee Nov 28, 2024
ba5e36f
LWG4135 The helper lambda of std::erase for list should specify retur…
burblebee Nov 28, 2024
0116785
LWG4140 Useless default constructors for bit reference types
burblebee Nov 28, 2024
5437db0
LWG4141 Improve prohibitions on "additional storage"
burblebee Nov 28, 2024
49fc523
LWG4142 format_parse_context::check_dynamic_spec should require at le…
burblebee Nov 28, 2024
8c53feb
LWG4144 Disallow unique_ptr<T&, D>
burblebee Nov 28, 2024
0f752fb
LWG4147 Precondition on inplace_vector::emplace
burblebee Nov 28, 2024
72ba8da
LWG4148 unique_ptr::operator* should not allow dangling references
burblebee Nov 28, 2024
d6a7096
LWG4153 Fix extra "-1" for philox_engine::max()
burblebee Nov 28, 2024
aa454e0
LWG4157 The resolution of LWG3465 was damaged by P2167R3
burblebee Nov 28, 2024
c70aad0
LWG4169 std::atomic<T>'s default constructor should be constrained
burblebee Nov 28, 2024
b3e60b8
LWG4170 contiguous_iterator should require to_address(I{})
burblebee Nov 28, 2024
7820989
[ostream.formatted.print] Remove "only" in wording for LWG4044 as per…
burblebee Dec 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions source/algorithms.tex
Original file line number Diff line number Diff line change
Expand Up @@ -11741,14 +11741,22 @@
\begin{itemdescr}
\pnum
\constraints
The expression \tcode{::new (declval<void*>()) T(declval<Args>()...)}
\tcode{is_unbounded_array_v<T>} is \tcode{false}.
The expression \tcode{::new (declval<void*>()) T(\linebreak{}declval<Args>()...)}
is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}.

\pnum
\mandates
If \tcode{is_array_v<T>} is \tcode{true}, \tcode{sizeof...(Args)} is zero.

\pnum
\effects
Equivalent to:
\begin{codeblock}
return ::new (@\placeholdernc{voidify}@(*location)) T(std::forward<Args>(args)...);
if constexpr (is_array_v<T>)
return ::new (@\placeholdernc{voidify}@(*location)) T[1]();
else
return ::new (@\placeholdernc{voidify}@(*location)) T(std::forward<Args>(args)...);
\end{codeblock}
\end{itemdescr}

Expand Down
8 changes: 7 additions & 1 deletion source/ranges.tex
Original file line number Diff line number Diff line change
Expand Up @@ -16995,6 +16995,9 @@
template<class R2, class V2, class Alloc2, class Unused>
requires @\libconcept{same_as}@<typename generator<R2, V2, Alloc2>::yielded, yielded>
auto yield_value(ranges::elements_of<generator<R2, V2, Alloc2>&&, Unused> g) noexcept;
template<class R2, class V2, class Alloc2, class Unused>
requires same_as<typename generator<R2, V2, Alloc2>::yielded, yielded>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to use \libconcept{same_as} or was it intentionally omitted because it's on the declaration immediately above?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We want \libconcept everywhere a library concept appears. This is refactoring-safe and if we ever want to have color highlighting for concept names (for example), we actually can do that.

auto yield_value(ranges::elements_of<generator<R2, V2, Alloc2>&, Unused> g) noexcept;

template<ranges::@\libconcept{input_range}@ R, class Alloc>
requires @\libconcept{convertible_to}@<ranges::range_reference_t<R>, yielded>
Expand Down Expand Up @@ -17122,6 +17125,9 @@
template<class R2, class V2, class Alloc2, class Unused>
requires @\libconcept{same_as}@<typename generator<R2, V2, Alloc2>::yielded, yielded>
auto yield_value(ranges::elements_of<generator<R2, V2, Alloc2>&&, Unused> g) noexcept;
template<class R2, class V2, class Alloc2, class Unused>
requires same_as<typename generator<R2, V2, Alloc2>::yielded, yielded>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same question about \libconcept here

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same answer. \libconcept, please

auto yield_value(ranges::elements_of<generator<R2, V2, Alloc2>&, Unused> g) noexcept;
\end{itemdecl}

\begin{itemdescr}
Expand Down Expand Up @@ -17154,7 +17160,7 @@

\pnum
\remarks
A \grammarterm{yield-expression} that calls this function
A \grammarterm{yield-expression} that calls one of these functions
has type \tcode{void}\iref{expr.yield}.
\end{itemdescr}

Expand Down