std::ranges::view_interface<D>::back - cppreference.com

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

来自cppreference.com
 
 
范围库
范围适配器
 
 
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*

等价于 return *ranges::prev(ranges::end(derived));,其中 derived 是:

1) static_cast<D&>(*this)
2) static_cast<const D&>(*this)


如果 empty()true,那么行为未定义。

(C++26 前)

如果 empty()true,那么:

  • 如果实现是硬化实现,那么就会发生契约违背
  • 如果实现不是硬化实现,那么行为未定义。
(C++26 起)

返回值

视图中的末元素。

注解

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

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

  • ranges::basic_istream_view
  • ranges::lazy_split_view
  • ranges::split_view
  • std::ranges::take_while_view

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

示例

参阅