Revision tags: llvmorg-21-init |
|
#
7f845cba |
| 28-Jan-2025 |
Nikolas Klauser <nikolasklauser@berlin.de> |
[libc++] Update the CI to Clang-20 and drop Clang-17 support (#117429)
|
Revision tags: llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2 |
|
#
6a54dfbf |
| 31-Jul-2024 |
Louis Dionne <ldionne.2@gmail.com> |
[libc++][NFC] Add missing license headers
Also standardize the license comment in several files where it was different from what we normally do.
|
Revision tags: llvmorg-19.1.0-rc1, llvmorg-20-init |
|
#
16f34925 |
| 26-Jun-2024 |
Hui <hui.xie1990@gmail.com> |
[libc++] restrict the expected conversion constructor not compete against copy constructor (#96101)
fixes #92676
So right now clang does not like
```
std::expected<std::any, int> e1;
auto e2
[libc++] restrict the expected conversion constructor not compete against copy constructor (#96101)
fixes #92676
So right now clang does not like
```
std::expected<std::any, int> e1;
auto e2 = e1;
```
So basically when clang tries to do overload resolution of `auto e2 =
e1;`
It finds
```
expected(const expected&); // 1. This is OK
expected(const expected<_Up, _OtherErr>&) requires __can_convert; // 2. This needs to check its constraints
```
Then in `__can_convert`, one of the check is
```
_Not<is_constructible<_Tp, expected<_Up, _OtherErr>&>>
```
which is checking
```
is_constructible<std::any, expected<_Up, _OtherErr>&>
```
Then it looks at `std::any`'s constructor
```
template < class _ValueType,
class _Tp = decay_t<_ValueType>,
class = enable_if_t< !is_same<_Tp, any>::value && !__is_inplace_type<_ValueType>::value &&
is_copy_constructible<_Tp>::value> >
any(_ValueType&& __value);
```
In the above, `is_copy_constructible<_Tp>` expands to
```
is_copy_constructible<std::expected<std::any, int>>
```
And the above goes back to the original thing we asked : copy the
`std::expected`, which goes to the overload resolution again.
```
expected(const expected&);
expected(const expected<_Up, _OtherErr>&) requires __can_convert;
```
So the second overload results in a logical cycle.
I am not a language lawyer. We could argue that clang should give up on
the second overload which has logical cycle, as the first overload is a
perfect match.
Anyway, the fix in this patch tries to short-circuiting the second
overload's constraint check: that is, if the argument matches exact same
`expected<T, E>`, we give up immediately and let the copy constructor to
deal with it
show more ...
|
Revision tags: llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4 |
|
#
134c9159 |
| 30-Oct-2023 |
Jan Kokemüller <jan.kokemueller@gmail.com> |
[libc++] Fix UB in <expected> related to "has value" flag (#68552) (#68733)
The calls to std::construct_at might overwrite the previously set
__has_value_ flag in the case where the flag is overlap
[libc++] Fix UB in <expected> related to "has value" flag (#68552) (#68733)
The calls to std::construct_at might overwrite the previously set
__has_value_ flag in the case where the flag is overlapping with
the actual value or error being stored (since we use [[no_unique_address]]).
To fix this issue, this patch ensures that we initialize the
__has_value_ flag after we call std::construct_at.
Fixes #68552
show more ...
|
Revision tags: llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7 |
|
#
1fd3173e |
| 23-Dec-2022 |
Mark de Wever <koraq@xs4all.nl> |
[NFC][libc++] Removes concepts tests.
Concepts should be supported by all supported compilers. This is probably a left over from an older version of the expected patch.
Reviewed By: #libc, philnik
[NFC][libc++] Removes concepts tests.
Concepts should be supported by all supported compilers. This is probably a left over from an older version of the expected patch.
Reviewed By: #libc, philnik
Differential Revision: https://reviews.llvm.org/D140632
show more ...
|
Revision tags: llvmorg-15.0.6, llvmorg-15.0.5 |
|
#
e356f681 |
| 04-Nov-2022 |
Hui Xie <hui.xie1990@gmail.com> |
[libc++] Implement `std::expected` P0323R12
Implement `std::expected` https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html
Added tests
Differential Revision: https://reviews.llvm
[libc++] Implement `std::expected` P0323R12
Implement `std::expected` https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html
Added tests
Differential Revision: https://reviews.llvm.org/D124516
address comment
show more ...
|