Maison >développement back-end >C++ >Comment créer des alias de fonction en C 11 ?
Aliasing de fonctions en C 11
En C 11, l'alias de classes à l'aide de la directive using est simple. Cependant, créer des alias pour les fonctions s'avère plus difficile.
Problème :
Considérez l'espace de noms et la déclaration de fonction suivants :
<code class="cpp">namespace bar { void f(); }</code>
Tentative d'alias la fonction avec using g = bar::f; entraînera une erreur, car "f" n'est pas un type dans l'espace de noms "bar".
Nettoyer la solution avec Perfect Forwarding :
Pour créer un alias de fonction , un transfert parfait peut être utilisé :
<code class="cpp">template<typename... Args> auto g(Args&&... args) -> decltype(f(std::forward<Args>(args)...)) { return f(std::forward<Args>(args)...); }</code>
Cette solution garantit que g transmet correctement tous les arguments à f, même si f est surchargé ou un modèle de fonction.
Définition de l'alias :
Un alias, ou B, est une entité de substance A qui garantit que tout remplacement de B dans le code source pour toute utilisation (à l'exclusion des déclarations ou des définitions) de A entraînera une compilation inchangée code.
Exemple :
Après avoir défini l'alias g, le code suivant appellera f via l'alias :
<code class="cpp">g(1, 2, 3); // Calls bar::f(1, 2, 3);</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!