J'écrivais juste une fabrique d'objets génériques et j'utilisais la méta-bibliothèque boost preprocessor pour créer un template variadic (en utilisant 2010 et il ne les supporte pas). Ma fonction utilise des références rval et std::forward
pour faire un transfert parfait et ça m'a fait penser ... quand C++ 0X sort et que j'avais un compilateur standard, je le ferais avec de vrais templates variadiques. Comment, est-ce que j'appellerais std::forward
sur les arguments? La seule façon de penser à cela nécessiterait un déballage manuel de ... params et je ne suis pas encore tout à fait là non plus. Y a-t-il une syntaxe plus rapide qui fonctionnerait?Comment appeler std :: forward sur tous les arguments d'une fonction variadique?
68
A
Répondre
103
Vous feriez:
template <typename ...Params>
void f(Params&&... params)
{
y(std::forward<Params>(params)...);
}
Le ...
assez bien dit « prendre ce qui est à gauche, et pour chaque paramètre de modèle, décompressez en conséquence. »
Questions connexes
- 1. JRuby: comment appeler une fonction Java variadique sans arguments optionnels
- 2. fonction Java variadique paramètres
- 3. Forward Déclaration de classe, fonction
- 4. Comment convertir les arguments de la fonction variadique dans la collection tels que Set Liste
- 5. Passant tous les arguments d'une fonction à une autre fonction
- 6. Problèmes avec la fonction variadique
- 7. Comment faire une itération sur les arguments de fonction
- 8. Accepter des modèles de classe variadique imbriqués comme arguments du modèle de fonction
- 9. appeler std :: max
- 10. Comment appeler une fonction spécifique sur FocusChange de tous les boutons dans Android?
- 11. Comment appeler une fonction membre sur un paramètre avec std :: for_each et boost :: bind?
- 12. En utilisant métaprogrammation modèle pour envelopper des arguments variadique C style
- 13. Passage d'une ellipse à une autre fonction variadique
- 14. std :: vecteur de std :: fonction
- 15. Comment passer des éléments d'un tableau à la fonction variadique?
- 16. Passage du contenu du tuple en tant qu'arguments de la fonction variadique
- 17. PHP Comment appeler parent :: __ call() et passer les arguments
- 18. Comment appeler la méthode live avec les arguments
- 19. en Mootools: appeler une fonction après tous les événements sur un élément est terminé
- 20. Comment appeler une fonction javascript sur onrowcommand?
- 21. Comment omettre les arguments $ null appelant une fonction?
- 22. Segmentation fault en fonction std std :: _ Rb_tree_rebalance_for_erase()
- 23. tous les foncteurs stl/boost pour appeler l'opérateur()
- 24. Forward déclare un conteneur STL?
- 25. C++ ... lorsque tous les arguments ont des valeurs par défaut
- 26. Comment Getopt :: Std gère-t-il les espaces dans les arguments de la ligne de commande?
- 27. C++: Initialiser struct avec un tableau contenant tous les arguments
- 28. Comment appeler la souris sur la fonction sur divs dyanamic
- 29. Boost.Fusion Functional: Appeler des fonctions avec des arguments par défaut
- 30. Comment appeler une fonction automatiquement?
Ajoutez à cela comment les paramètres doivent être transmis. Je pense que les tutoriels montrent 'void f (Params && ... params)' – UncleBens
@Uncle: Ajouté, je pense que vous avez raison. – GManNickG
Sur parler comme un jour de pirate j'utilise 'void f (Ar && ... arg)' – woolstar