Namespaces
Variants

std::ranges::view_interface<D>::front

cppreference.netより
 
 
範囲ライブラリ
範囲アダプタ
 
 
constexpr decltype(auto) front()
    requires ranges::forward_range<D>;
(1) (C++20以降)
constexpr decltype(auto) front() const
    requires ranges::forward_range<const D>;
(2) (C++20以降)

デフォルトのfront()メンバ関数の実装は、派生型のビュー内の最初の要素を返します。要素が値で返されるか参照で返されるかは、イテレータ型のoperator*に依存します。

以下と同等ですreturn *ranges::begin(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 から派生した型は、独自の front() メンバ関数を提供していません。これらの型のほとんどすべてがデフォルトの実装を使用しています。

注目すべき例外は std::ranges::basic_istream_view です。これは決して forward_range を満たさないため、ビューは継承された front() を使用できません。

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

例

関連項目

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