Espacios de nombres
Variantes

atributo de C++: nodiscard

De cppreference.com
 
 
 
 
 

Si una función declarada nodiscard o una función que devuelve una enumeración o clase declarada nodiscard por valor se llama desde una expresión de valor descartado aparte de una conversión a void, se incentiva al compilador a emitir una advertencia.

Sintaxis

[[nodiscard]] (1)
[[nodiscard( literal-de-cadena )]] (2) (desde C++20)
literal-de-cadena - Texto que podría usarse para explicar la justificación de por qué el resultado no debe descartarse.

Explicación

Aparece en una declaración de función, declaración de enumeración o declaración de clase.

Si de una expresión de valor descartado que no sea una conversión a void:

se incentiva al compilador para que emita una advertencia.

El literal-de-cadena, si se especifica, generalmente se incluye en las advertencias.
(desde C++20)

Ejemplo

struct [[nodiscard]] info_de_error { };
info_de_error habilitar_modo_seguro_de_misil();
void lanzar_misiles();
void probar_misiles() {
   habilitar_modo_seguro_de_misil();    // el compilador puede advertir si se 
                                        // descarta un valor nodiscard
   lanzar_misiles();
}
info_de_error& foo();
void f1() {
    foo(); // tipo nodiscard no se devuelve por valor, no hay advertencia
}


Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
P1771R1 C++17 Atributo nodiscard en constructores no tiene efecto Puede causar una advertencia si el objeto construido se descarta

Biblioteca estándar

Las siguientes funciones estándar están declaradas con el atributo nodiscard:

Funciones de asignación de memoria
Funciones de asignación.
(función) [editar]
Asigna almacenamiento no inicializado.
(función miembro pública de std::allocator) [editar]
[estático]
asigna almacenamiento sin inicializar utilizando el asignador
Original:
allocates uninitialized storage using the allocator
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(función miembro estática pública de std::allocator_traits) [editar]
Asigna memoria.
(función miembro pública de std::pmr::memory_resource) [editar]
Asigna memoria.
(función miembro pública de std::pmr::polymorphic_allocator<T>) [editar]
asigna almacenamiento sin inicializar utilizando el asignador exterior
Original:
allocates uninitialized storage using the outer allocator
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(función miembro pública de std::scoped_allocator_adaptor) [editar]
Acceso indirecto
(C++17)
Barrera de optimización de puntero.
(plantilla de función) [editar]
Informa al compilador que un puntero está alineado.
(plantilla de función) [editar]
Funciones de comprobación de vacío
(C++17)
Comprueba si un contenedor está vacío
(plantilla de función) [editar]
Comprueba si el controlador de nodo está vacío
(función miembro pública de node handle)
(C++11)
Comprueba si el contenedor está vacío.
(función miembro pública de std::array) [editar]
Comprueba si la cadena está vacía
(función miembro pública de std::basic_string) [editar]
Comprueba si la vista está vacía
(función miembro pública de std::basic_string_view<CharT,Traits>) [editar]
Comprueba si el contenedor está vacío.
(función miembro pública de std::deque<T,Allocator>) [editar]
(C++11)
Comprueba si el contenedor está vacío.
(función miembro pública de std::forward_list) [editar]
Comprueba si el contenedor está vacío.
(función miembro pública de std::list) [editar]
Comprueba si el contenedor está vacío.
(función miembro pública de std::map<Key,T,Compare,Allocator>) [editar]
Verifica si la coincidencia tuvo éxito.
(función miembro pública de std::match_results<BidirIt,Alloc>) [editar]
Comprueba si el contenedor está vacío.
(función miembro pública de std::multimap<Key,T,Compare,Allocator>) [editar]
Comprueba si el contenedor está vacío.
(función miembro pública de std::multiset<Key,Compare,Allocator>) [editar]
Comprueba si el contenedor subyacente está vacío.
(función miembro pública de std::priority_queue<T,Container,Compare>) [editar]
Comprueba si el contenedor subyacente está vacío.
(función miembro pública de std::queue<T,Container>) [editar]
Comprueba si el contenedor está vacío.
(función miembro pública de std::set<Key,Compare,Allocator>) [editar]
Comprueba si la secuencia está vacía
(función miembro pública de std::span<T,Extent>) [editar]
Comprueba si el contenedor subyacente está vacío.
(función miembro pública de std::stack<T,Container>) [editar]
(C++11)
Comprueba si el contenedor está vacío.
(función miembro pública de std::unordered_map<Key,T,Hash,KeyEqual,Allocator>) [editar]
(C++11)
Comprueba si el contenedor está vacío.
(función miembro pública de std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>) [editar]
(C++11)
Comprueba si el contenedor está vacío.
(función miembro pública de std::unordered_multiset<Key,Hash,KeyEqual,Allocator>) [editar]
(C++11)
Comprueba si el contenedor está vacío.
(función miembro pública de std::unordered_set<Key,Hash,KeyEqual,Allocator>) [editar]
Comprueba si el contenedor está vacío.
(función miembro pública de std::vector<T,Allocator>) [editar]
Comprueba si la ruta de acceso está vacía
(función miembro pública de std::filesystem::path) [editar]
Misceláneos
(C++11)
Ejecuta una función asíncronamente (posiblemente en un nuevo hilo) y devuelve un std::future que contendrá el resultado.
(plantilla de función) [editar]