Passer un prédicat unaire à une fonction en C++

J'ai besoin d'une fonction qui établit une politique pour ma classe pour l'affichage. e.g:

SetDisplayPolicy(BOOLEAN_PRED_T f)

C'est en supposant que BOOLEAN_PRED_T est un fonction du pointeur de la à certains prédicat booléen type:

typedef bool (*BOOLEAN_PRED_T) (int);

Je suis intéressé uniquement sur l'e.g: afficher quelque chose quand passé prédicat est VRAI, ne s'affichent pas lorsque c'est faux.

L'exemple ci-dessus fonctionne pour les fonctions de renvoi booléen et en prenant un int, mais j'ai besoin d'un pointeur générique pour la SetDisplayPolicy argument, alors j'ai pensé à UnaryPredicate, mais il est en augmentation. Comment je peux passer un prédicat unaire à une fonction dans la STL/C++? unary_function< bool,T > ne fonctionnera pas parce que j'ai besoin d'un bool comme valeur de retour, mais je veux demander à l'utilisateur juste pour "unaire fonction qui retourne bool", dans la plupart approche générique.

J'ai pensé de tirer mon propre type:

template<typename T>
class MyOwnPredicate : public std::unary_function<bool, T>{};

Que cela pourrait être une bonne approche?

InformationsquelleAutor Hernán | 2009-07-01