Spec-Zone.ru › C++

std::ranges::iter_move

Определён в заголовочном файле <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. Подробности см. в разделе Объект точки настройки.

Пример

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/iterator/ranges/iter_move

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API