Maison >développement back-end >C++ >Comment utiliser `std::source_location` avec les fonctions de modèle variadique ?
Problème :
La fonctionnalité C 20 std::source_location fournit informations contextuelles lors des appels de fonction. Cependant, son intégration avec les fonctions de modèle variadique pose des défis en raison de la position fixe des arguments variadiques.
Tentatives infructueuses :
Solution utilisant un guide de déduction :
Pour résoudre ce problème , un guide de déduction peut être utilisé :
<code class="cpp">template<typename... Ts> struct debug { debug(Ts&&... ts, const std::source_location& loc = std::source_location::current()); }; template<typename... Ts> debug(Ts&&...) -> debug<Ts...>;</code>
En spécifiant un guide de déduction, le compilateur peut déduire les types corrects pour la fonction de modèle variadique.
Test :
<code class="cpp">int main() { debug(5, 'A', 3.14f, "foo"); }</code>
Ce code se compile avec succès et imprime les arguments fournis ainsi que leur emplacement source.
DEMO : [lien fourni dans la question d'origine]
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!