Namespaces
Variants

std::ranges:: iter_move

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
ヘッダーで定義 <iterator>
inline namespace /* unspecified */ {

inline constexpr /* unspecified */ iter_move = /* unspecified */ ;

}
(C++20以降)
(カスタマイゼーションポイントオブジェクト)
呼び出しシグネチャ
template < class T >

requires /* see below */

constexpr decltype ( auto ) iter_move ( T && t ) noexcept ( /* see below */ ) ;
(C++20以降)

指定されたイテレータから右辺値参照またはprvalue一時オブジェクトを取得します。

A ranges :: iter_move ( t ) 式等価 です:

  1. iter_move ( t ) 、ただし t がクラス型または列挙型を持ち、かつ式が 未評価オペランド として扱われた場合に有効である場合。このとき iter_move オーバーロード解決 は、 実引数依存の名前探索 によって見つかった候補のみを使用して行われる。
  2. それ以外の場合、 std :: move ( * t ) 、ただし * t が有効であり、かつ左辺値である場合。
  3. それ以外の場合、 * t 、ただし * t が有効であり、かつ右辺値である場合。

それ以外のすべての場合において、 ranges::iter_move の呼び出しは不適格となり、テンプレートのインスタンス化の直接の文脈内で ranges :: iter_move ( e ) が現れる場合、 置換失敗 を引き起こす可能性があります。

ranges :: iter_move ( e ) * e と等しくない場合、プログラムは不適格(診断不要)です。

カスタマイゼーションポイントオブジェクト

ranges::iter_move という名前は カスタマイゼーションポイントオブジェクト を表します。これは 関数オブジェクト のconstな リテラル semiregular クラス型です。詳細については CustomizationPointObject を参照してください。

関連項目

(C++20)
調整された基盤イテレータを逆参照した結果を、関連する右辺値参照型にキャストする
(関数)
(C++20)
基盤イテレータを逆参照した結果を、関連する右辺値参照型にキャストする
(関数)