Während es einfach ist, Alias-Klassen mithilfe von using-Anweisungen zu aliasen, wird das direkte Aliasing von Funktionen in C standardmäßig nicht unterstützt. Es gibt jedoch Möglichkeiten, dies effektiv zu erreichen.
Bedenken Sie den folgenden Code:
<code class="cpp">namespace bar { void f(); }</code>
Um diese Funktion zu aliasen, können Sie Perfect Forwarding wie folgt verwenden:
<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 funktioniert für das Aliasing jeder Funktion, einschließlich überladener Funktionen und Vorlagenfunktionen. Im Wesentlichen leitet die Vorlagenfunktion g Argumente mithilfe der perfekten Weiterleitung an die ursprüngliche Funktion f weiter.
Auf diese Weise können Sie jede Verwendung von bar::f in Ihrem Code effektiv durch g ersetzen und so funktional identische Ergebnisse erzielen. Beachten Sie jedoch, dass dieser Ansatz keine neue Funktion mit dem Namen g definiert, sondern vielmehr einen generalisierten Wrapper erstellt, der die ursprüngliche Funktion aufruft.
Das obige ist der detaillierte Inhalt vonWie Aliasfunktionen in C 11?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!