Heim >Backend-Entwicklung >C++ >Wie erstelle ich Funktionsaliase in C 11?
Funktionsaliasing in C 11
In C 11 ist das Aliasing von Klassen mithilfe der using-Direktive unkompliziert. Allerdings erweist sich das Erstellen von Aliasen für Funktionen als schwieriger.
Problem:
Betrachten Sie den folgenden Namespace und die folgende Funktionsdeklaration:
<code class="cpp">namespace bar { void f(); }</code>
Versuch eines Alias die Funktion mit using g = bar::f; führt zu einem Fehler, da „f“ kein Typ im Namespace „bar“ ist.
Saubere Lösung mit Perfect Forwarding:
So erstellen Sie einen Funktionsalias , perfekte Weiterleitung kann verwendet werden:
<code class="cpp">template<typename... Args> auto g(Args&&... args) -> decltype(f(std::forward<Args>(args)...)) { return f(std::forward<Args>(args)...); }</code>
Diese Lösung stellt sicher, dass g alle Argumente korrekt an f weiterleitet, auch wenn f überladen ist oder eine Funktionsvorlage.
Definition von Alias :
Ein Alias oder B ist eine Entität der Substanz A, die sicherstellt, dass jede Ersetzung von B im Quellcode für jede Verwendung (ausgenommen Deklarationen oder Definitionen) von A zu einer unveränderten Kompilierung führt Code.
Beispiel:
Nach der Definition des g-Alias ruft der folgende Code f über den Alias auf:
<code class="cpp">g(1, 2, 3); // Calls bar::f(1, 2, 3);</code>
Das obige ist der detaillierte Inhalt vonWie erstelle ich Funktionsaliase in C 11?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!