Heim > Backend-Entwicklung > C++ > Hauptteil

Wie erstelle ich Funktionsaliase in C 11?

Patricia Arquette
Freigeben: 2024-10-24 05:37:02
Original
601 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!