diff options
| author | Xiaoyang Liu <siujoeng.lau@gmail.com> | 2024-04-23 10:58:14 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-23 10:58:14 -0400 |
| commit | c1086532d4d5c0a261457dfb00e79fcb764e3d78 (patch) | |
| tree | 793aaedb7ccaa8c35ae720161a5cb0030a7d9c44 /llvm/lib/CodeGen/StackProtector.cpp | |
| parent | adb0126ef11b0083d5a78be1534ccefa53def1cf (diff) | |
| download | llvm-c1086532d4d5c0a261457dfb00e79fcb764e3d78.zip llvm-c1086532d4d5c0a261457dfb00e79fcb764e3d78.tar.gz llvm-c1086532d4d5c0a261457dfb00e79fcb764e3d78.tar.bz2 | |
[libc++][ranges] P2387R3: Pipe support for user-defined range adaptors (#89148)
This patch finalizes the std::ranges::range_adaptor_closure
class template from https://wg21.link/P2387R3.
// [range.adaptor.object], range adaptor objects
template<class D>
requires is_class_v<D> && same_as<D, remove_cv_t<D>>
class range_adaptor_closure { };
The current implementation of __range_adaptor_closure was introduced
in ee44dd8062a26541808fc0d3fd5c6703e19f6016 and has served as the
foundation for the range adaptors in libc++ for a while. This patch
keeps its implementation, with the exception of the following changes:
- __range_adaptor_closure now includes the missing constraints
`is_class_v<D> && same_as<D, remove_cv_t<D>>` to restrict the
type of class that can inherit from it. (https://eel.is/c++draft/ranges.syn)
- The operator| of __range_adaptor_closure no longer requires its
first argument to model viewable_range. (https://eel.is/c++draft/range.adaptor.object#1)
- The _RangeAdaptorClosure concept is refined to exclude cases where
T models range or where T has base classes of type range_adaptor_closure<U>
for another type U. (https://eel.is/c++draft/range.adaptor.object#2)
Diffstat (limited to 'llvm/lib/CodeGen/StackProtector.cpp')
0 files changed, 0 insertions, 0 deletions
