std:: ignore
|
Défini dans l'en-tête
<tuple>
|
||
|
Défini dans l'en-tête
<utility>
|
||
| (1) | ||
|
const
/*ignore-type*/
ignore
;
|
(depuis C++11)
(jusqu'à C++14) |
|
|
constexpr
/*ignore-type*/
ignore
;
|
(depuis C++14)
(inline depuis C++17) |
|
| (2) | ||
|
struct
/*ignore-type*/
{
|
(depuis C++11)
(jusqu'à C++14) ( exposition uniquement* ) |
|
|
struct
/*ignore-type*/
{
|
(depuis C++14)
( exposition uniquement* ) |
|
std::ignore
.
Table des matières |
Notes
Une expression
void
ou une valeur de champ de bits volatile ne peut pas être assignée à
std::ignore
.
std::ignore
est destiné à être utilisé avec
std::tie
lors du déballage d'un
std::tuple
, comme espace réservé pour les arguments qui ne sont pas utilisés, mais peut être utilisé pour toute assignation non désirée.
Certains guides de code recommandent d'utiliser
std::ignore
pour éviter les avertissements liés aux valeurs de retour non utilisées des fonctions
[[
nodiscard
]]
, même lorsqu'une assignation n'est pas nécessaire.
Pour ignorer les valeurs ne nécessitant pas d'assignation, on peut effectuer un cast vers
void
. Pour les variables qui possèdent des noms, mais dont la valeur n'est pas utilisée, on peut les caster vers
void
ou les déclarer avec
[[
maybe_unused
]]
.
Exemple
-
Démontre l'utilisation de
std::ignoreavec une fonction[[ nodiscard ]]. - Déstructure une std:: pair < iterator, bool > retournée par std:: set :: insert ( ) , mais ne conserve que le booléen.
#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"; }
Sortie :
Value was inserted successfully.
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 2773 | C++14 |
std::tuple
a été rendu
constexpr
mais
std::ignore
ne l'était pas encore
|
rendu constexpr |
| P2968R2 | C++11 |
le comportement de
std::ignore
en dehors de
std::tie
n'était pas formellement spécifié
|
entièrement spécifié |
Voir aussi
|
(C++11)
|
crée un
tuple
de références de lvalue ou décompose un tuple en objets individuels
(modèle de fonction) |