std::ranges::view_interface<D>::back
From cppreference.com
< cpp | ranges | view interface
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Ranges library
(C++23)(C++23)
(C++26)(C++26)
(C++23)(C++23)
(C++26)(C++26)
(C++26)(C++26)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)
(C++23)(C++23)
(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
constexpr decltype(auto) back()
requires ranges::bidirectional_range <D> && ranges::common_range <D>;
(1)
(since C++20)
requires ranges::bidirectional_range <D> && ranges::common_range <D>;
constexpr decltype(auto) back() const
requires ranges::bidirectional_range <const D> && ranges::common_range <const D>;
(2)
(since C++20)
requires ranges::bidirectional_range <const D> && ranges::common_range <const D>;
The default implementation of back()
member function returns the last element in the view of the derived type. Whether the element is returned by value or by reference depends on the operator* of the iterator type.
1) Let
derived
be static_cast<D&>(*this). Equivalent to return *ranges::prev (ranges::end (derived));. The behavior is undefined if empty()
is true (i.e. the beginning iterator compares equal to the sentinel), even if the iterator obtained in the same way is dereferenceable.2) Same as (1), except that
derived
is static_cast<const D&>(*this).Contents
[edit] Return value
The last element in the view.
[edit] Notes
In C++20, no type derived from std::ranges::view_interface in the standard library provides their own back()
member function.
However, following derived types cannot use the default implementations, as they never satisfy neither bidirectional_range
nor common_range
:
- std::ranges::basic_istream_view
- std::ranges::lazy_split_view
- std::ranges::split_view
- std::ranges::take_while_view
The inherited back()
member function is available for std::ranges::empty_view , but a call to it always results in undefined behavior.
[edit] Example
This section is incomplete
Reason: no example
Reason: no example
[edit] See also
(C++14)
(function template) [edit]