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)

Получает rvalue-ссылку или prvalue временный объект из заданного итератора.

Выражение ranges :: iter_move ( t ) является эквивалентным по выражению следующему:

  1. iter_move ( t ) , если t имеет классовый тип или тип перечисления, и выражение корректно при рассмотрении как невычисляемый операнд , где разрешение перегрузки для iter_move выполняется только с кандидатами, найденными с помощью поиска, зависимого от аргументов .
  2. В противном случае, std :: move ( * t ) , если * t корректно и является lvalue.
  3. В противном случае, * t , если * t корректно и является rvalue.

Во всех остальных случаях вызов ranges::iter_move является некорректным, что может привести к ошибке подстановки , когда ranges :: iter_move ( e ) появляется в непосредственном контексте инстанцирования шаблона.

Если ranges :: iter_move ( e ) не равно * e , программа является некорректной, диагностика не требуется.

Объекты точек кастомизации

Имя ranges::iter_move обозначает объект точки кастомизации , который является константным функциональным объектом типа литерального semiregular класса. Для подробностей см. CustomizationPointObject .

Пример

Смотрите также

(C++20)
преобразует результат разыменования скорректированного базового итератора в соответствующий тип rvalue-ссылки
(функция)
(C++20)
преобразует результат разыменования базового итератора в соответствующий тип rvalue-ссылки
(функция)