Maison > développement back-end > C++ > Comment créer des alias de fonction en C 11 ?

Comment créer des alias de fonction en C 11 ?

Patricia Arquette
Libérer: 2024-10-24 05:37:02
original
729 Les gens l'ont consulté

How to Create Function Aliases in 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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal