std::ranges::view_interface<D>::back

来自cppreference.com
 
 
范围库
范围访问
范围转换器
(C++23)
范围原语



悬垂迭代器处理
范围概念
视图

范围工厂
适配器
范围生成器
范围适配器对象
范围适配器闭包对象
辅助项
 
std::ranges::view_interface
成员函数
(C++20)
(C++23)
(C++23)
(C++20)
(C++20)
(C++20)
back
(C++20)
(C++20)
 
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)derivedstatic_cast<D&>(*this) 。等价于 return *ranges::prev(ranges::end(derived)); 。若 empty()true (即起始迭代器与哨位比较相等)则行为未定义,即使以相同方式获得的迭代器可解引用。
2)(1) ,除了 derivedstatic_cast<const D&>(*this)

参数

(无)

返回值

视图中的末元素。

注解

C++20 中,标准库无派生自 std::ranges::view_interface 的类型提供其自身的 back 成员函数。

然而,下列派生类型不能使用默认实现,因为它们决不一同满足 bidirectional_rangecommon_range

  • std::ranges::basic_istream_view
  • std::ranges::common_view
  • std::ranges::split_view
  • std::ranges::take_while_view

继承的 back 成员函数对 std::ranges::empty_view 可用,但对它的调用始终导致未定义行为。

示例

参阅

返回指向一个容器或数组的逆向迭代器
(函数模板)
返回指向范围的逆向迭代器
(定制点对象)
返回指向只读范围的逆向迭代器
(定制点对象)