std::ranges::view_interface<D>::back
来自cppreference.com
< cpp | ranges | view interface
| constexpr decltype(auto) back() requires ranges::bidirectional_range<D> && ranges::common_range<D>; |
(1) | (C++20 起) |
| constexpr decltype(auto) back() const requires ranges::bidirectional_range<const D> && ranges::common_range<const D>; |
(2) | (C++20 起) |
back 成员函数的默认实现返回派生类型视图中的末元素。元素是按值还是按引用返回取决于迭代器类型的 operator* 。
1) 令
derived 为 static_cast<D&>(*this) 。等价于 return *ranges::prev(ranges::end(derived)); 。若 empty() 为 true (即起始迭代器与哨位比较相等)则行为未定义,即使以相同方式获得的迭代器可解引用。2) 同 (1) ,除了
derived 为 static_cast<const D&>(*this) 。参数
(无)
返回值
视图中的末元素。
注解
C++20 中,标准库无派生自 std::ranges::view_interface 的类型提供其自身的 back 成员函数。
然而,下列派生类型不能使用默认实现,因为它们决不一同满足 bidirectional_range 与 common_range :
- std::ranges::basic_istream_view
- std::ranges::common_view
- std::ranges::split_view
- std::ranges::take_while_view
继承的 back 成员函数对 std::ranges::empty_view 可用,但对它的调用始终导致未定义行为。
示例
| 本节未完成 原因:暂无示例 |
参阅
| (C++14) |
返回指向一个容器或数组的逆向迭代器 (函数模板) |
| (C++20) |
返回指向范围的逆向迭代器 (定制点对象) |
| (C++20) |
返回指向只读范围的逆向迭代器 (定制点对象) |