J'essaie de comprendre comment de nombreuses classes boost pourraient accepter une signature de fonction comme argument de modèle et ensuite "extraire" de là le type de résultat, le premier type d'argument et ainsi de suite. Je sais que boost fournit également une implémentation plus portable, en utilisant un argument template pour chaque argument de la fonction et c'est facile à comprendre. Quelqu'un peut-il m'expliquer la magie au-delà de ça?La question boost "signature"
2
A
Répondre
6
Au cœur de sa juste spécialisation et répétition:
template<class S> struct Sig;
template<class R> struct Sig<R()> {
typedef R result_type;
};
template<class R, class T0> struct Sig<R (T0)> {
typedef R result_type;
typedef T0 first_type;
};
// ...
+0
En regardant function_traits.hpp je peux totalement voir votre point – Emiliano
Questions connexes
- 1. haskell question de la signature de type
- 2. Basic Boost Regex question
- 3. C++ boost enable_if question
- 4. boost question lambda
- 5. Boost Multi_Index Question
- 6. Boost ForEach Question
- 7. Boost wave context concept_check question
- 8. Question de stockage spécifique à Boost Thread (boost/thread/tss.hpp)
- 9. Question C++: boost :: bind recevoir autre boost :: bind
- 10. C++ Question à propos de Boost UBLAS
- 11. Noob boost :: bind membre fonction callback question
- 12. Comment boost :: bind ne correspond pas à la signature fournie mais fonctionne bien?
- 13. Quelle est la différence entre DomainKey-Signature et DKIM-Signature?
- 14. Vérifier la signature Facebook Connect
- 15. Les tests Intellisense boost :: boost :: boost :: boost :: boost :: boost :: classname ....... pourquoi?
- 16. Écrire asynchrone aux valeurs socket et utilisateur (question boost :: asio)
- 17. Est-ce que Boost :: Jam (bjam) a un "mode question"?
- 18. Obtenir la signature de l'utilisateur
- 19. Détecter la signature du sélecteur
- 20. C#: - P/invoquer la signature
- 21. Question conceptuelle sur la signature d'un iPhone: pourquoi le déploiement Ad Hoc est-il nécessaire?
- 22. Incompatible Signature de la méthode du noyau
- 23. Postgresql - Modifier la signature de la fonction
- 24. Signature Panel
- 25. boost :: sérialisation de boost :: unordered_map
- 26. Problèmes avec boost :: ptr_vector et boost :: tout
- 27. Aide bind boost/fonctions
- 28. Fragmentation de la mémoire @ boost :: asio?
- 29. sérialisation XML en utilisant boost :: sérialisation
- 30. Valider la signature sur EXE avec CertGetCertificateChain
Vous voulez dire, vous voulez savoir comment [ 'function_traits'] (http://www.boost.org/doc/libs/1_43_0/libs /type_traits/doc/html/boost_typetraits/reference/function_traits.html) est implémenté? – kennytm
@Kenny: Note de côté, mais j'ai juste passé mon temps à travailler sur mon propre 'function_traits' et je terminais juste, et maintenant j'ai découvert que Boost l'a. Devrait de connu. .-. – GManNickG
@KennyTM: Fondamentalement, oui :) – Emiliano