Namespaces
Variants

std:: indirectly_swappable

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
indirectly_swappable
(C++20)
(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>
template < class I1, class I2 = I1 >

concept indirectly_swappable =
std:: indirectly_readable < I1 > &&
std:: indirectly_readable < I2 > &&
requires ( const I1 i1, const I2 i2 )
{
ranges:: iter_swap ( i1, i1 ) ;
ranges:: iter_swap ( i1, i2 ) ;
ranges:: iter_swap ( i2, i1 ) ;
ranges:: iter_swap ( i2, i2 ) ;

} ;
(начиная с C++20)

Концепт indirectly_swappable определяет отношение между двумя типами, моделирующими соответственно std::indirectly_readable , при котором их ссылочные типы могут быть обменены.

Семантические требования

I1 и I2 моделируют indirectly_swappable только в том случае, если все подразумеваемые концепты моделируются.

Сохранение равенства

Выражения, объявленные в requires выражениях концепций стандартной библиотеки, должны быть equality-preserving (если не указано иное).

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

указывает, что тип является косвенно читаемым путем применения оператора *
(concept)
(C++20)
обменивает значения, на которые ссылаются два разыменовываемых объекта
(customization point object)