std:: ignore
|
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*/
{
|
(seit C++11)
(bis C++14) ( nur zur Darstellung* ) |
|
|
struct
/*ignore-type*/
{
|
(seit C++14)
( nur zur Darstellung* ) |
|
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
-
Demonstriert die Verwendung von
std::ignorezusammen mit einer[[ nodiscard ]]-Funktion. - 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) |