Named Requirements
From cppreference.net
<
cpp
Los named requirements listados en esta página son los requisitos con nombre utilizados en el texto normativo del estándar de C++ para definir las expectativas de la biblioteca estándar.
La responsabilidad de garantizar que las plantillas de biblioteca sean instanciadas con argumentos de plantilla que cumplan estos requisitos recae en el programador. El incumplimiento de esto puede resultar en diagnósticos del compilador muy complejos.
Algunos de estos requisitos se formalizan en C++20 utilizando la función del lenguaje concepts .
Básico |
||
|
especifica que un objeto del tipo puede ser construido por defecto
(requerimiento con nombre) |
||
|
(C++11)
|
especifica que un objeto del tipo puede ser construido a partir de un rvalue
(requerimiento con nombre) |
|
|
especifica que un objeto del tipo puede ser construido desde un lvalue
(requisito con nombre) |
||
|
(C++11)
|
especifica que un objeto del tipo puede ser asignado desde un rvalue
(requisito con nombre) |
|
|
especifica que un objeto del tipo puede ser asignado desde un lvalue
(requisito nombrado) |
||
|
especifica que un objeto del tipo puede ser destruido
(requerimiento con nombre) |
||
Propiedades de tipo |
||
|
Nota: el estándar no define requisitos nombrados con nombres especificados en esta subcategoría.
Estas son categorías de tipos definidas por el lenguaje central. Se incluyen aquí como requisitos nombrados solo para consistencia. |
||
|
tipos de objeto que no son tipos array ni tipos clase
(requisito con nombre) |
||
|
(obsoleto en C++20)
|
Tipos POD (Plain Old Data), compatibles con C
struct
(requerimiento con nombre) |
|
|
(C++11)
|
los objetos de estos tipos pueden mantener sus valores después de copiar sus bytes subyacentes
(requisito nombrado) |
|
|
(C++11)
(deprecated in C++26)
|
los objetos de estos tipos pueden ser construidos y copiados trivialmente
(requisito con nombre) |
|
|
(C++11)
|
estos tipos son útiles para comunicarse con código escrito en otros lenguajes de programación
(requisito con nombre) |
|
|
los objetos de estos tipos pueden ser creados implícitamente, y sus tiempos de vida pueden iniciarse implícitamente
(requisito con nombre) |
||
Amplio de la biblioteca |
||
|
las operaciones booleanas (
operator
&&
,
operator
||
, y
operator
!
) tienen semántica usual
(requisito con nombre) |
||
operator==
es una relación de equivalencia
(requerimiento con nombre) |
||
operator<
es una relación de ordenamiento débil estricto
(requisito con nombre) |
||
|
puede ser intercambiado con una llamada a función no miembro sin calificadores
swap
(
)
(requerimiento nombrado) |
||
|
(C++11)
|
un
LegacyIterator
que se desreferencia a un tipo
Swappable
(requisito con nombre) |
|
|
(C++11)
|
un tipo similar a puntero que admite un valor nulo
(requerimiento con nombre) |
|
|
(C++11)
|
un
FunctionObject
que para entradas con diferentes valores tiene una baja probabilidad de producir la misma salida
(requisito con nombre) |
|
|
un tipo de clase que contiene información de asignación
(requisito con nombre) |
||
|
un objeto que puede ser invocado con la sintaxis de llamada a función
(requerimiento con nombre) |
||
|
un tipo para el cual la operación de invocación está definida
(requisito con nombre) |
||
|
un
FunctionObject
que devuelve un valor convertible a
bool
para un argumento sin modificarlo
(requisito con nombre) |
||
|
un
FunctionObject
que devuelve un valor convertible a
bool
para dos argumentos sin modificarlos
(requisito con nombre) |
||
|
un
BinaryPredicate
que establece una relación de orden
(requisito con nombre) |
||
Contenedor |
|
|
estructura de datos que permite el acceso a elementos mediante iteradores
(requisito con nombre) |
|
|
contenedor que utiliza iteradores bidireccionales
(requisito con nombre) |
|
|
(C++11)
|
contenedor que utiliza un asignador
(requisito con nombre) |
|
contenedor con elementos almacenados linealmente
(requisito con nombre) |
|
|
(C++17)
|
contenedor con elementos almacenados en direcciones de memoria adyacentes
(requisito con nombre) |
|
contenedor que almacena elementos asociándolos a claves
(requisito con nombre) |
|
|
(C++11)
|
contenedor que almacena elementos en cubos asociándolos a claves
(requisito con nombre) |
Elemento contenedor |
|
|
(C++11)
|
el elemento puede ser construido por defecto en almacenamiento no inicializado
(requisito con nombre) |
|
(C++11)
|
el elemento puede ser construido por copia en almacenamiento no inicializado
(requisito con nombre) |
|
(C++11)
|
el elemento puede ser construido por movimiento en almacenamiento no inicializado
(requisito con nombre) |
|
(C++11)
|
el elemento puede ser construido en almacenamiento no inicializado
(requisito con nombre) |
|
(C++11)
|
el elemento puede ser destruido usando un asignador de memoria
(requisito nombrado) |
Iterador |
|
|
concepto general para acceder a datos dentro de alguna estructura de datos
(requisito con nombre) |
|
|
iterador que puede utilizarse para leer datos
(requisito con nombre) |
|
|
iterador que puede utilizarse para escribir datos
(requisito con nombre) |
|
|
iterador que puede utilizarse para leer datos múltiples veces
(requisito con nombre) |
|
|
iterador que puede ser incrementado y decrementado
(requisito con nombre) |
|
|
iterador que puede avanzarse en tiempo constante
(requisito con nombre) |
|
|
(C++17)
|
iterador a elementos asignados de forma contigua
(requisito con nombre) |
|
(C++20)
|
iterador que puede ser utilizado durante la evaluación de expresiones constantes
(requisito con nombre) |
Funciones de E/S de flujo |
|
|
una función de entrada de flujo que no omite espacios en blanco iniciales y cuenta los caracteres procesados
(requisito con nombre) |
|
|
una función de entrada de flujo que omite espacios en blanco iniciales
(requisito con nombre) |
|
|
una función básica de salida de flujo
(requisito con nombre) |
|
|
una función de salida de flujo que establece failbit en errores y devuelve una referencia al flujo
(requisito con nombre) |
|
Formatters |
|
|
(C++20)
|
abstrae las operaciones de formato para un tipo de argumento de formato y tipo de carácter dados
(requisito con nombre) |
|
(C++20)
|
define las funciones utilizadas por la
biblioteca de formato
(requerimiento con nombre) |
Generación de Números Aleatorios |
|
|
(C++11)
|
consume una secuencia de enteros y produce una secuencia de valores de 32 bits sin signo
(requisito con nombre) |
|
(C++11)
|
devuelve enteros sin signo distribuidos uniformemente de forma aleatoria
(requisito con nombre) |
|
(C++11)
|
un
UniformRandomBitGenerator
determinístico, definido por la semilla
(requisito con nombre) |
|
(C++11)
|
un
RandomNumberEngine
que transforma la salida de otro
RandomNumberEngine
(requisito con nombre) |
|
(C++11)
|
devuelve números aleatorios distribuidos de acuerdo con una función de densidad de probabilidad matemática dada
(requisito con nombre) |
Concurrencia |
|
|
(C++11)
|
proporciona semántica de propiedad exclusiva para agentes de ejecución (es decir, hilos)
(requisito nombrado) |
|
(C++11)
|
un
BasicLockable
que admite la adquisición de bloqueo intentada
(requisito con nombre) |
|
(C++11)
|
un
Lockable
que admite la adquisición temporizada de bloqueos
(requisito con nombre) |
|
(C++14)
|
proporciona semánticas de propiedad compartida para agentes de ejecución (es decir, hilos)
(requisito con nombre) |
|
(C++14)
|
un
SharedLockable
que admite la adquisición de bloqueo temporizado
(requisito con nombre) |
|
(C++11)
|
un
Lockable
que protege contra carreras de datos y sincronización secuencialmente consistente
(requisito con nombre) |
|
(C++11)
|
un
TimedLockable
que protege contra carreras de datos y sincronización secuencialmente consistente
(requisito con nombre) |
|
(C++17)
|
un
Mutex
que admite semánticas de propiedad compartida
(requisito con nombre) |
|
(C++14)
|
un
TimedMutex
que admite semánticas de propiedad compartida
(requisito con nombre) |
Rangos |
|
|
(C++20)
|
un
FunctionObject
que crea un
adaptador de rango
a partir de un
viewable_range
y argumentos adicionales
(requisito con nombre) |
|
(C++20)
|
un
FunctionObject
que soporta el operador de tubería
(requisito con nombre) |
Personalización de Vista Multidimensional |
|
|
(C++23)
|
controla el mapeo de índices multidimensionales en
mdspan
(requerimiento con nombre) |
|
(C++23)
|
una política que contiene
LayoutMapping
requisitos
(requisito con nombre) |
|
(C++23)
|
una política que controla el acceso al manejador de datos en
mdspan
(requisito con nombre) |
Otro |
|
|
(C++11)
|
describe una propiedad de un tipo
(requerimiento con nombre) |
|
(C++11)
|
describe una relación entre dos tipos
(requerimiento con nombre) |
|
(C++11)
|
modifica una propiedad de un tipo
(requisito con nombre) |
|
(C++11)
|
agrega una duración, un punto temporal y una función para obtener el punto temporal actual
(requerimiento con nombre) |
|
(C++11)
|
un
Clock
que no lanza excepciones
(requisito con nombre) |
|
define tipos y funciones para un tipo de carácter
(requisito con nombre) |
|
|
bitset, entero, o enumeración
(requisito nombrado) |
|
|
un tipo para el cual la inicialización es efectivamente igual a la asignación
(requisito con nombre) |
|
|
(C++11)
|
define los tipos y funciones utilizados por la
biblioteca de expresiones regulares
(requerimiento con nombre) |
|
(C++11)
|
un tipo con constructor constexpr
(requisito con nombre) |
|
Esta sección está incompleta
Razón: ¿Algún otro requisito faltante? |