Namespaces
Variants

std:: ignore

From cppreference.net
Utilities library
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*/

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

} ;
(depuis C++11)
(jusqu'à C++14)
( exposition uniquement* )
struct /*ignore-type*/

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

} ;
(depuis C++14)
( exposition uniquement* )
1) Un objet auquel on peut assigner n'importe quelle valeur sans aucun effet.
2) Le type de 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

  1. Démontre l'utilisation de std::ignore avec une fonction [[ nodiscard ]] .
  2. 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)