Namespaces
Variants

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

ja.cppreference.net より
 
 
範囲ライブラリ
範囲アダプタ
 
 
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では、標準ライブラリ内の std::ranges::view_interface から派生した型は、独自の back() メンバ関数を提供しません。

しかし、以下の派生型はデフォルト実装を使用できません。なぜなら、これらは bidirectional_range も common_range もどちらも満たさないためです:

継承された back() メンバー関数は std::ranges::empty_view で利用可能ですが、これを呼び出すと常に未定義動作が発生します。

例

関連項目

コンテナまたは配列の先頭への逆方向イテレータを返す
(関数テンプレート)
範囲への逆方向イテレータを返す
(カスタマイゼーションポイントオブジェクト)
読み取り専用範囲への逆方向イテレータを返す
(カスタマイゼーションポイントオブジェクト)