<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/libcxx/include/__functional/reference_wrapper.h, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[libc++] P2655R3 common_reference_t of reference_wrapper Should Be a Reference Type (#141408)</title>
<updated>2025-07-06T16:32:59+00:00</updated>
<author>
<name>Hui</name>
<email>hui.xie1990@gmail.com</email>
</author>
<published>2025-07-06T16:32:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0d1e5ab2fd9cf9c48d60176391624544d2e2242c'/>
<id>0d1e5ab2fd9cf9c48d60176391624544d2e2242c</id>
<content type='text'>
Fixes #105260

This patch applies the change as a DR to C++20. The rationale is that
the paper is more like a bug fix. It does not introduce new features, it
simply changes an existing behaviour (as a bug fix). MSVC STL DRed this
paper to C++20 as well.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes #105260

This patch applies the change as a DR to C++20. The rationale is that
the paper is more like a bug fix. It does not introduce new features, it
simply changes an existing behaviour (as a bug fix). MSVC STL DRed this
paper to C++20 as well.</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++][NFC] Remove __remove_uncvref (#140531)</title>
<updated>2025-07-04T09:16:47+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2025-07-04T09:16:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1f8e2a4b1068e28d04fd17c076f15e88b2e0d7d9'/>
<id>1f8e2a4b1068e28d04fd17c076f15e88b2e0d7d9</id>
<content type='text'>
The use-case for `__is_same_uncvref` seems rather dubious, since not a
single use-cases needed the `remove_cvref_t` to be applied to both of
the arguments. Removing the alias makes it clearer what actually
happens, since we're not using an internal name anymore and it's clear
what the `remove_cvref_t` should apply to.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The use-case for `__is_same_uncvref` seems rather dubious, since not a
single use-cases needed the `remove_cvref_t` to be applied to both of
the arguments. Removing the alias makes it clearer what actually
happens, since we're not using an internal name anymore and it's clear
what the `remove_cvref_t` should apply to.</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] P2944R3: Constrained comparisons - update `reference_wrapper` implementation (#139368)</title>
<updated>2025-06-15T04:45:48+00:00</updated>
<author>
<name>Hristo Hristov</name>
<email>hghristov.rmm@gmail.com</email>
</author>
<published>2025-06-15T04:45:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a0c00ccd5ff180c721def8001c870338d5de319e'/>
<id>a0c00ccd5ff180c721def8001c870338d5de319e</id>
<content type='text'>
Updates the implementation `std::reference_wrapper` -
[P2944R3](https://wg21.link/P2944R3) as discussed in
https://github.com/llvm/llvm-project/pull/117664#discussion_r1857826166
This PR also refactors the tests in preparation to implements the
constrained comparisons for `optional`, `variant` etc.

- Moves the test helpers (concepts and types) for testing constrained
comparisons to `test_comparisons.h`.
- Updates the `std::reference_wrapper` implementation to use the concept
`__core_convertible_to&lt;bool&gt;` as per comments in #135759.

Closes #138233

# References:
- [refwrap.comparisons](https://wg21.link/refwrap.comparisons)

---------

Co-authored-by: Hristo Hristov &lt;zingam@outlook.com&gt;
Co-authored-by: Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Updates the implementation `std::reference_wrapper` -
[P2944R3](https://wg21.link/P2944R3) as discussed in
https://github.com/llvm/llvm-project/pull/117664#discussion_r1857826166
This PR also refactors the tests in preparation to implements the
constrained comparisons for `optional`, `variant` etc.

- Moves the test helpers (concepts and types) for testing constrained
comparisons to `test_comparisons.h`.
- Updates the `std::reference_wrapper` implementation to use the concept
`__core_convertible_to&lt;bool&gt;` as per comments in #135759.

Closes #138233

# References:
- [refwrap.comparisons](https://wg21.link/refwrap.comparisons)

---------

Co-authored-by: Hristo Hristov &lt;zingam@outlook.com&gt;
Co-authored-by: Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Remove _LIBCPP_TEMPLATE_VIS (#134885)</title>
<updated>2025-04-09T21:47:57+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2025-04-09T21:47:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=af9c04fa689029c80451ec2c497509c7bd28534f'/>
<id>af9c04fa689029c80451ec2c497509c7bd28534f</id>
<content type='text'>
The need for `_LIBCPP_TEMPLATE_VIS` has been removed in #133233.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The need for `_LIBCPP_TEMPLATE_VIS` has been removed in #133233.</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Make sure that __desugars_to isn't tripped up by reference_wrapper, const and ref qualifiers (#132092)</title>
<updated>2025-03-25T18:29:06+00:00</updated>
<author>
<name>Louis Dionne</name>
<email>ldionne.2@gmail.com</email>
</author>
<published>2025-03-25T18:29:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b0668d859b237f6991f416b688cedb7389354fd8'/>
<id>b0668d859b237f6991f416b688cedb7389354fd8</id>
<content type='text'>
Previously, const and ref qualification on an operation would cause
__desugars_to to report false, which would lead to unnecessary
pessimizations. The same holds for reference_wrapper.

In practice, const and ref qualifications on the operation itself are
not relevant to determining whether an operation desugars to something
else or not, so can be ignored.

We are not stripping volatile qualifiers from operations in this patch
because we feel that this requires additional discussion.

Fixes #129312</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, const and ref qualification on an operation would cause
__desugars_to to report false, which would lead to unnecessary
pessimizations. The same holds for reference_wrapper.

In practice, const and ref qualifications on the operation itself are
not relevant to determining whether an operation desugars to something
else or not, so can be ignored.

We are not stripping volatile qualifiers from operations in this patch
because we feel that this requires additional discussion.

Fixes #129312</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Define an internal API for std::invoke and friends (#116637)</title>
<updated>2025-01-20T17:00:15+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2025-01-20T17:00:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0fa05456a8dc468961c33bd8149b157194672c71'/>
<id>0fa05456a8dc468961c33bd8149b157194672c71</id>
<content type='text'>
Currently we're using quite different internal names for the
`std::invoke` family of type traits. This adds a layer around the
current implementation to make it easier to understand when it is used
and makes it easier to define multiple implementations of it.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently we're using quite different internal names for the
`std::invoke` family of type traits. This adds a layer around the
current implementation to make it easier to understand when it is used
and makes it easier to define multiple implementations of it.</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++][modules] Fix missing and incorrect includes (#108850)</title>
<updated>2024-09-16T19:06:20+00:00</updated>
<author>
<name>Louis Dionne</name>
<email>ldionne.2@gmail.com</email>
</author>
<published>2024-09-16T19:06:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=09e3a360581dc36d0820d3fb6da9bd7cfed87b5d'/>
<id>09e3a360581dc36d0820d3fb6da9bd7cfed87b5d</id>
<content type='text'>
This patch adds a large number of missing includes in the libc++ headers
and the test suite. Those were found as part of the effort to move
towards a mostly monolithic top-level std module.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds a large number of missing includes in the libc++ headers
and the test suite. Those were found as part of the effort to move
towards a mostly monolithic top-level std module.</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Enable modernize-use-equals-delete (#93293)</title>
<updated>2024-06-18T08:51:57+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2024-06-18T08:51:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=bbe4a80605619dcb819ccfee016cf1355fb00af2'/>
<id>bbe4a80605619dcb819ccfee016cf1355fb00af2</id>
<content type='text'>
Differential Revision: https://reviews.llvm.org/D121213</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Differential Revision: https://reviews.llvm.org/D121213</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++][functional] P2944R3 (partial): Comparisons for `reference_wrapper` (`reference_wrapper` operators only) (#88384)</title>
<updated>2024-05-09T09:48:37+00:00</updated>
<author>
<name>Hristo Hristov</name>
<email>hghristov.rmm@gmail.com</email>
</author>
<published>2024-05-09T09:48:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8afa6cf510608079e24d07423782c4db20de7498'/>
<id>8afa6cf510608079e24d07423782c4db20de7498</id>
<content type='text'>
Implements https://wg21.link/P2944R3 (partially)
Implements https://wg21.link/LWG4071 /
https://cplusplus.github.io/LWG/issue4071 (fixes build failures in the
test suite)
- https://eel.is/c++draft/refwrap.comparisons</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implements https://wg21.link/P2944R3 (partially)
Implements https://wg21.link/LWG4071 /
https://cplusplus.github.io/LWG/issue4071 (fixes build failures in the
test suite)
- https://eel.is/c++draft/refwrap.comparisons</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Refactor more __enable_ifs to the canonical style (#81457)</title>
<updated>2024-02-20T00:47:38+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2024-02-20T00:47:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=76a247271507f009a186e81c7f90076ffb043ec3'/>
<id>76a247271507f009a186e81c7f90076ffb043ec3</id>
<content type='text'>
This brings the code base closer to having only a single style of
`enable_if`s.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This brings the code base closer to having only a single style of
`enable_if`s.</pre>
</div>
</content>
</entry>
</feed>
