std:: ignore
|
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*/
{
|
(desde C++11)
(hasta C++14) ( solo para exposición* ) |
|
|
struct
/*ignore-type*/
{
|
(desde C++14)
( solo para exposición* ) |
|
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
-
Demuestra el uso de
std::ignorejunto con una función[[ nodiscard ]]. - 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) |