Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstelle ich Funktionsaliase in C 11?

Wie erstelle ich Funktionsaliase in C 11?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-24 05:37:02602Durchsuche

How to Create Function Aliases 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!

Stellungnahme:
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