"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment utiliser `std :: source_location` avec des fonctions de modèle variadiques dans C ++ 20?

Comment utiliser `std :: source_location` avec des fonctions de modèle variadiques dans C ++ 20?

Publié le 2025-03-25
Parcourir:409

How to Use `std::source_location` with Variadic Template Functions in C  20?

Résolution de l'emplacement de la source Mothes dans les fonctions de modèle variadique

En C 20, la fonction des détails du contexte de l'appel est rendu possible avec std :: source_location. Cependant, l'utiliser avec des fonctions de modèle variadique s'est révélée difficile en raison du positionnement du paramètre Source_Location.

La situation de position

paramètres variables, habitant la fin de la liste des paramètres. Cela a entravé l'utilisation de std :: source_location pour les raisons suivantes:

  • première tentative:

    template 
    void debug(Args&&... args, const std::source_location& loc = std::source_location::current());

    échoue parce que les paramètres variadiques doivent résider à la fin. void debug (const std :: source_location & loc = std :: source_location :: current (), Args && ... args);

  • introduit l'ambiguïté pour les appels car il interdit un paramètre inattendu.
  • La forme initiale peut être révélateur en introduisant une déduction Guide:
    template 
    void debug(const std::source_location& loc = std::source_location::current(),
             Args&&... args);
    modèle débogage de structure { Debug (ts && ... ts, const std :: source_location & loc = std :: source_location :: current ()); }; modèle debug (ts && ...) -> debug ;

    cela permet des appels comme:

int main () { Debug (5, 'a', 3.14f, "foo"); }

Conclusion:

 Grâce à l'utilisation des guides de déduction, les programmeurs C peuvent incorporer sans effort Std :: Source_Location dans des fonctions de modèle variadiques pour capturer les informations sur l'appel de la fonction.  variadiques.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3