Namespaces
Variants

std:: ignore

From cppreference.net
Utilities library
Definiert in Header <tuple>
Definiert in Header <utility>
(1)
const /*ignore-type*/ ignore ;
(seit C++11)
(bis C++14)
constexpr /*ignore-type*/ ignore ;
(seit C++14)
(inline seit C++17)
(2)
struct /*ignore-type*/

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

} ;
(seit C++11)
(bis C++14)
( nur zur Darstellung* )
struct /*ignore-type*/

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

} ;
(seit C++14)
( nur zur Darstellung* )
1) Ein Objekt, dem jeder Wert ohne Auswirkung zugewiesen werden kann.
2) Der Typ von std::ignore .

Inhaltsverzeichnis

Hinweise

Ein void -Ausdruck oder ein flüchtiger Bitfeld-Wert kann nicht std::ignore zugewiesen werden.

std::ignore ist für die Verwendung mit std::tie beim Entpacken eines std::tuple vorgesehen, als Platzhalter für die Argumente, die nicht verwendet werden, kann jedoch für jede unerwünschte Zuweisung verwendet werden.

Einige Code-Richtlinien empfehlen die Verwendung von std::ignore , um Warnungen von ungenutzten Rückgabewerten [[ nodiscard ]] -Funktionen zu vermeiden, selbst wenn keine Zuweisung erforderlich ist.

Um Werte zu ignorieren, die keiner Zuweisung bedürfen, kann man sie nach void casten. Für Variablen mit Namen, deren Wert jedoch ungenutzt bleibt, kann man diese entweder nach void casten oder sie mit [[ maybe_unused ]] deklarieren.

Beispiel

  1. Demonstriert die Verwendung von std::ignore zusammen mit einer [[ nodiscard ]] -Funktion.
  2. Entpackt ein std:: pair < iterator, bool > , das von std:: set :: insert ( ) zurückgegeben wird, speichert jedoch nur den booleschen Wert.
#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";
}

Ausgabe:

Value was inserted successfully.

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 2773 C++14 std::tuple wurde constexpr gemacht, aber std::ignore war noch nicht wurde constexpr gemacht
P2968R2 C++11 das Verhalten von std::ignore außerhalb von std::tie war nicht formal spezifiziert vollständig spezifiziert gemacht

Siehe auch

(C++11)
erstellt ein tuple aus Lvalue-Referenzen oder entpackt ein tuple in einzelne Objekte
(Funktions-Template)