


Warum gibt es in C-Vorlagen eine scheinbar bedeutungslose Zuweisung zu std::enable_if?
Das Innenleben von std::enable_if verstehen
In einer aktuellen Frage wurde die Verwendung von std::enable_if als bedingter Rückgabetyp besprochen. Während die erste Verwendung klar war, blieb die zweite, die eine scheinbar bedeutungslose Zuweisung an std::enable_if beinhaltete, rätselhaft.
Entschlüsselung des Konzepts
Um das Rätsel zu lösen , müssen wir uns mit der Definition von std::enable_if: befassen:
template<bool Cond, class T = void> struct enable_if {}; template<class T> struct enable_if<true, T> { typedef T type; };
Der Schlüssel liegt in der Tatsache, dass typedef T type nur definiert wird, wenn bool Cond wahr ist.
Anwendung auf das Beispiel
Mit diesem Verständnis schauen wir uns den Code noch einmal an:
template<typename T> typename std::enable_if<std::numeric_limits<T>::is_integer, void>::type foo(const T &bar) { isInt(bar); }
Hier wird std::enable_if verwendet, um den Rückgabetyp der foo-Funktion zu definieren . Wenn T eine Ganzzahl ist, ist der Rückgabetyp void; Andernfalls wird die Funktion nicht kompiliert.
Die Rolle der Standardeinstellung
Im zweiten Beispiel:
template<typename T, typename std::enable_if<std::is_integral<T>::value, int>::type = 0> void foo(const T& bar) { isInt(); }
Der Standardparameter = 0 stellt sicher dass beide Optionen mit foo
Evolving the Understanding
In C 14 wird der Typ std::enable_if_t eingeführt, welches anstelle des Typedef-Formulars verwendet werden sollte. Dies führt zu einem prägnanteren Rückgabetyp:
std::enable_if_t<std::numeric_limits<T>::is_integer>
Das obige ist der detaillierte Inhalt vonWarum gibt es in C-Vorlagen eine scheinbar bedeutungslose Zuweisung zu std::enable_if?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

GULC: C -Bibliothek von Grund auf neu gebaut

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

eindeutiger Gebrauch und Phrasenfreigabe

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?
