Combien d'arguments au maximum peut-on passer à boost :: bind()no. des arguments boost :: bind
Répondre
par défaut, il est 9.
http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html#NumberOfArguments
Même si vous ne pouvez pas passer à C++ 11, vous devriez envisager de passer de boost :: function aux fonctions TR1, qui était un aperçu de C++ 11
Fondamentalement, ce qui a commencé comme boost :: function est devenu une partie de la bibliothèque standard C++, qui De nos jours est défini avec des modèles variadiques. En un mot, cela signifie qu'il n'y a pas de limite plus difficile (mais vous pourriez avoir besoin de définir des variables d'espace réservé supplémentaires si vous avez besoin au-delà de _19
)
Pour passer de la fonction boost :: à std :: TR1 faire le
suivanttrouver toutes les occurences #include <boost/function>
et #include <boost/bind>
et les remplacer par:
#include <tr1/functional>
using std::tr1::function;
using std::tr1::bind;
using std::tr1::placeholders::_1;
using std::tr1::placeholders::_2;
...
Cela devrait fonctionner en remplacement de drop-in. Si vous passez à C++ 11 plus tard, lancez dans la partie "tr1".
- 1. boost :: transform_iterator et boost :: bind
- 2. boost :: bind avec des fonctions surchargées?
- 3. Question C++: boost :: bind recevoir autre boost :: bind
- 4. Aide bind boost/fonctions
- 5. problème avec boost :: bind
- 6. Boost bind function
- 7. Pourquoi l'action sémantique boost :: spirit :: qi ne fonctionne pas avec deux arguments lorsque j'utilise boost :: bind?
- 8. comment boost :: fonction et boost :: bind travail
- 9. Boost :: bind et std :: copy
- 10. boost: asio: problème read_until avec boost :: bind
- 11. boost :: bind & boost :: fonction avec args partielle
- 12. Comment libérer la référence des arguments bind boost :: signals2 :: signal keep?
- 13. erreur du compilateur interne et boost :: bind
- 14. Y at-il des problèmes boost :: bind avec VS2010?
- 15. std :: foreach avec boost :: bind
- 16. boost :: bind et fonctions virtuelles
- 17. Utiliser boost :: function et boost :: bind vers une variable membre
- 18. boost :: bind conversion implicite boost :: fonction ou pointeur fonction
- 19. Impossible d'utiliser boost :: bind pour accéder aux éléments boost :: tuple
- 20. Utilise boost :: bind pour transmettre plus d'arguments que prévu?
- 21. Quelle est la différence entre boost :: bind et boost :: lambda :: bind?
- 22. Quand boost :: bind lie-t-il les arguments au type requis?
- 23. Pass et appeler une fonction membre (boost :: bind/boost :: fonction?)
- 24. Utiliser boost :: phoenix :: bind avec boost :: spirit :: qi :: symbols :: add
- 25. Comment utiliser Boost :: asio :: buffer (buf, taille) avec boost bind?
- 26. Perform substitution des arguments sur la poussée imbriqué :: bind sans composition
- 27. Problème boost :: imbrication lambda :: bind-s
- 28. en utilisant std :: sort avec boost :: bind
- 29. Mappage boost :: bind pour gérer automatiquement plusieurs arguments pour la fonction membre
- 30. "Interface" comme sémantique avec boost :: bind
Et si vous appelez des fonctions avec plus de 9 arguments alors vous devez repenser votre conception! – GrahamS
@GrahamS Je pense que boost.lambda bind prend jusqu'à 9 aussi bien. Boost.Spirit.Phoenix, la bibliothèque que j'utilise pour la programmation fonctionnelle, a une macro de 10 w/a par défaut pour définir la limite supérieure. – KitsuneYMG
J'ai écrit un système IOC qui nécessitait des templates par argument utilisés pour construire des objets. Je pense qu'il a fini par atteindre 12. Peut-être que trop – CashCow