Namespaces
Variants

Named Requirements

From cppreference.net
C++ named requirements

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 .

Contenidos

Básico

especifica que un objeto del tipo puede ser construido por defecto
(requerimiento con nombre)
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)
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)
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)
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)
un LegacyIterator que se desreferencia a un tipo Swappable
(requisito con nombre)
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)
contenedor que utiliza un asignador
(requisito con nombre)
contenedor con elementos almacenados linealmente
(requisito con nombre)
contenedor con elementos almacenados en direcciones de memoria adyacentes
(requisito con nombre)
contenedor que almacena elementos asociándolos a claves
(requisito con nombre)
contenedor que almacena elementos en cubos asociándolos a claves
(requisito con nombre)
Elemento contenedor
el elemento puede ser construido por defecto en almacenamiento no inicializado
(requisito con nombre)
el elemento puede ser construido por copia en almacenamiento no inicializado
(requisito con nombre)
el elemento puede ser construido por movimiento en almacenamiento no inicializado
(requisito con nombre)
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)
iterador a elementos asignados de forma contigua
(requisito con nombre)
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

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

consume una secuencia de enteros y produce una secuencia de valores de 32 bits sin signo
(requisito con nombre)
devuelve enteros sin signo distribuidos uniformemente de forma aleatoria
(requisito con nombre)
un UniformRandomBitGenerator determinístico, definido por la semilla
(requisito con nombre)
un RandomNumberEngine que transforma la salida de otro RandomNumberEngine
(requisito con nombre)
devuelve números aleatorios distribuidos de acuerdo con una función de densidad de probabilidad matemática dada
(requisito con nombre)

Concurrencia

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)
un Lockable que admite la adquisición temporizada de bloqueos
(requisito con nombre)
proporciona semánticas de propiedad compartida para agentes de ejecución (es decir, hilos)
(requisito con nombre)
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)
un Mutex que admite semánticas de propiedad compartida
(requisito con nombre)
un TimedMutex que admite semánticas de propiedad compartida
(requisito con nombre)

Rangos

un FunctionObject que crea un adaptador de rango a partir de un viewable_range y argumentos adicionales
(requisito con nombre)
un FunctionObject que soporta el operador de tubería
(requisito con nombre)

Personalización de Vista Multidimensional

controla el mapeo de índices multidimensionales en mdspan
(requerimiento con nombre)
una política que contiene LayoutMapping requisitos
(requisito con nombre)
una política que controla el acceso al manejador de datos en mdspan
(requisito con nombre)

Otro

describe una propiedad de un tipo
(requerimiento con nombre)
describe una relación entre dos tipos
(requerimiento con nombre)
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)
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)
define los tipos y funciones utilizados por la biblioteca de expresiones regulares
(requerimiento con nombre)
un tipo con constructor constexpr
(requisito con nombre)