std::experimental::ranges:: swap
|
Definido en el encabezado
<experimental/ranges/utility>
|
||
|
namespace
{
constexpr
/* no especificado */
swap
=
/* no especificado */
;
|
(ranges TS)
(objeto de punto de personalización) |
|
|
Firma de llamada
|
||
|
template
<
class
T,
class
U
>
requires
/* ver más abajo */
|
||
Intercambia los valores referenciados por t y u .
Una llamada a
ranges::swap
es equivalente a:
- template < class T > void swap ( T & , T & ) = delete ;
- template < class T, std:: size_t N > void swap ( T ( & ) [ N ] , T ( & ) [ N ] ) = delete ;
-
cualquier declaración de
swapencontrada mediante búsqueda dependiente de argumento .
T
y
U
son referencias lvalue a tipos de arreglo de igual extensión (pero posiblemente con diferentes tipos de elemento) y
ranges::
swap
(
*
t,
*
u
)
es una expresión válida.
T
y
U
son ambos
V&
para algún tipo
V
que cumple con los requisitos sintácticos de
MoveConstructible
<
V
>
y
Assignable
<
V
&
, V
>
, intercambia los valores referenciados como si fuera mediante
V v
{
std
::
move
(
t
)
}
;
t
=
std
::
move
(
u
)
;
u
=
std
::
move
(
v
)
;
. Si los requisitos semánticos de alguno de los conceptos no se cumplen, el programa está mal formado; no se requiere diagnóstico.
ranges::swap
está mal formada.
ranges:: swap puede utilizarse en una expresión constante si cada función que llama (según lo especificado anteriormente) puede utilizarse de esta manera.
Contenidos |
Objetos de punto de personalización
El nombre
ranges::swap
denota un
objeto de punto de personalización
, que es un
objeto función
de tipo
literal
Semiregular
(denotado, con fines expositivos, como
SwapT
). Todas las instancias de
SwapT
son iguales. Por lo tanto,
ranges::swap
puede copiarse libremente y sus copias pueden utilizarse indistintamente.
Dado un conjunto de tipos
Args...
, si
std::
declval
<
Args
>
(
)
...
cumplen los requisitos para argumentos de
ranges::swap
mencionados anteriormente,
SwapT
satisfará
ranges
::
Invocable
<
const
SwapT, Args...
>
. De lo contrario, ningún operador de llamada a función de
SwapT
participa en la resolución de sobrecarga.
En cada unidad de traducción en la que
ranges::swap
está definido, se refiere a la misma instancia del objeto de punto de personalización. (Esto significa que puede usarse libremente en elementos como funciones inline y plantillas de funciones sin violar la
regla de una definición
.)
Excepciones
swap
se encuentra como se describe anteriormente.
std:: is_nothrow_move_assignable < V > :: value )
Ejemplo
|
Esta sección está incompleta
Motivo: sin ejemplo |
Véase también
|
intercambia los valores de dos objetos
(plantilla de función) |