[libcxx-commits] [libcxx] [libc++][ranges] Implement P3052R2: `view_interface::at()` (PR #205012)
A. Jiang via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Sep 2 00:30:36 PDT 2026
================
@@ -159,6 +161,28 @@ class view_interface {
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator[](range_difference_t<_RARange> __index) const {
return ranges::begin(__derived())[__index];
}
+
+# if _LIBCPP_STD_VER >= 29
+
+ template <random_access_range _RARange = _Derived>
+ requires sized_range<_RARange> // freestanding-deleted
+ [[nodiscard]] constexpr decltype(auto) at(range_difference_t<_RARange> __index) {
+ if (__index < 0 || __index >= ranges::distance(__derived())) {
+ std::__throw_out_of_range("The index passed to `view_interface::at()` is out of bounds.");
+ }
+ return (*this)[__index];
+ }
+
+ template <random_access_range _RARange = const _Derived>
+ requires sized_range<_RARange> // freestanding-deleted
----------------
frederick-vs-ja wrote:
```suggestion
requires sized_range<_RARange>
```
https://github.com/llvm/llvm-project/pull/205012
More information about the libcxx-commits
mailing list