Heim > Backend-Entwicklung > C++ > Was sind die Anwendungen von „decltype(auto)' in C?

Was sind die Anwendungen von „decltype(auto)' in C?

Mary-Kate Olsen
Freigeben: 2024-12-11 09:32:09
Original
763 Leute haben es durchsucht

What are the Applications of `decltype(auto)` in C  ?

Wofür wird decltype(auto) verwendet?

Das in C 14 eingeführte decltype(auto)-Idiom ermöglicht es automatischen Deklarationen, die Decltype-Regeln für das gegebene zu verwenden Ausdruck. Während seine primäre Verwendung darin besteht, den Rückgabetyp einer Funktion abzuleiten, gibt es auch andere wertvolle Anwendungen.

Rückgabetyp-Weiterleitung in generischem Code

Decltype(auto) ermöglicht in generischem Code die perfekte Weiterleitung einer Rückgabe Typ, ohne den zugrunde liegenden Typ zu kennen. Dies ist besonders nützlich für generische Funktionen:

template<class Fun, class... Args>
decltype(auto) Example(Fun fun, Args&&... args) {
    return fun(std::forward<Args>(args)...);
}
Nach dem Login kopieren

Verzögern der Rückgabetypableitung in rekursiven Vorlagen

decltype(auto) kann auch die Rückgabetypableitung in rekursiven Vorlagen verzögern und so eine unendliche Rekursion verhindern. Zum Beispiel:

template<int i>
struct Int {};

constexpr auto iter(Int<0>) -> Int<0>;

template<int i>
constexpr auto iter(Int<i>) -> decltype(auto) {
    return iter(Int<i-1>{});
}
Nach dem Login kopieren

Andere Verwendungszwecke

Über diese primären Anwendungen hinaus hat decltype(auto) verschiedene andere Verwendungszwecke, wie im C-Standardentwurf (N3936) beschrieben:

  • Variable Initialisierung:

    decltype(auto) x3d = i;  // decltype(x3d) is int
    Nach dem Login kopieren
  • Zeigerdeklaration:

    decltype(auto)*x7d = &i;  // decltype(x7d) is int*
    Nach dem Login kopieren
  • Darstellung eines Platzhaltertyps in bestimmten Kontexten, z. B. Funktionsdeklaratoren, Typspezifizierersequenzen und Konvertierungsfunktions-IDs.

Das obige ist der detaillierte Inhalt vonWas sind die Anwendungen von „decltype(auto)' in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage