Namespaces
Variants

std:: ignore

From cppreference.net
Utilities library
Definido en el encabezado <tuple>
Definido en el encabezado <utility>
(1)
const /*ignore-type*/ ignore ;
(desde C++11)
(hasta C++14)
constexpr /*ignore-type*/ ignore ;
(desde C++14)
(inline desde C++17)
(2)
struct /*ignore-type*/

{
template < class T >
const /*ignore-type*/ & operator = ( const T & ) const noexcept
{
return * this ;
}

} ;
(desde C++11)
(hasta C++14)
( solo para exposición* )
struct /*ignore-type*/

{
template < class T >
constexpr const /*ignore-type*/ & operator = ( const T & ) const noexcept
{
return * this ;
}

} ;
(desde C++14)
( solo para exposición* )
1) Un objeto tal que se le puede asignar cualquier valor sin que tenga efecto.
2) El tipo de std::ignore .

Contenidos

Notas

Una expresión void o un valor de campo de bits volátil no puede asignarse a std::ignore .

std::ignore está destinado para usar con std::tie al desempaquetar una std::tuple , como un marcador de posición para los argumentos que no se utilizan, pero puede usarse para cualquier asignación no deseada.

Algunas guías de código recomiendan usar std::ignore para evitar advertencias de valores de retorno no utilizados de funciones [[ nodiscard ]] , aunque no se requiera una asignación.

Para ignorar valores que no requieren asignación, se puede convertir a void . Para variables que tienen nombres, pero cuyo valor no se utiliza, se pueden convertir a void o declarar esas variables con [[ maybe_unused ]] .

Ejemplo

  1. Demuestra el uso de std::ignore junto con una función [[ nodiscard ]] .
  2. Desempaqueta un std:: pair < iterator, bool > devuelto por std:: set :: insert ( ) , pero solo guarda el booleano.
#include <iostream>
#include <set>
#include <string>
#include <tuple>
[[nodiscard]] int dontIgnoreMe()
{
    return 42;
}
int main()
{
    std::ignore = dontIgnoreMe();
    std::set<std::string> set_of_str;
    if (bool inserted{false};
        std::tie(std::ignore, inserted) = set_of_str.insert("Test"),
        inserted)
        std::cout << "Value was inserted successfully.\n";
}

Salida:

Value was inserted successfully.

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Se aplica a Comportamiento publicado Comportamiento correcto
LWG 2773 C++14 std::tuple se hizo constexpr pero std::ignore aún no lo era se hizo constexpr
P2968R2 C++11 el comportamiento de std::ignore fuera de std::tie no estaba formalmente especificado se especificó completamente

Véase también

(C++11)
crea un tuple de referencias a lvalue o desempaqueta un tuple en objetos individuales
(plantilla de función)