Maison >développement back-end >C++ >Comment puis-je parcourir correctement un pack de paramètres C à l'aide de l'extension de pack ?
Bouclage sur des packs de paramètres avec extension de pack
Dans l'extrait de code fourni, vous avez l'intention de parcourir un pack de paramètres de longueur variable à l'aide du syntaxe d'extension du pack. Cependant, le code ne parvient pas à se compiler avec l'erreur "Le pack de paramètres doit être étendu dans ce contexte."
Pour résoudre ce problème, vous devez placer l'extension du pack dans un contexte où elle est autorisée. Un emplacement approprié se trouve dans une liste d'initialisation entre accolades. Considérez le code modifié suivant :
template<typename... Args> static void foo2(Args &&... args) { int dummy[] = { 0, ( (void) bar(std::forward<Args>(args)), 0) ... }; }
Voici comment cela fonctionne :
Avec cette modification, le code sera compilé et bouclé avec succès sur le pack de paramètres.
C 17 Fold Expressions
En C 17, vous pouvez simplifier le code à l'aide d'expressions de pliage :
((void) bar(std::forward<Args>(args)), ...);
Cette expression développe le pack et applique l'opération spécifiée (dans ce cas, en appelant bar( )) de gauche à droite.
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!