Desde Référence cpp J'ai trouvé ça :
Le modèle de classe std::function est une enveloppe de fonction polymorphe à usage général. Les instances de std::function peuvent stocker, copier et invoquer n'importe quelle cible Callable -- fonctions, expressions lambda, expressions bind ou autres objets de fonction, ainsi que des pointeurs vers des fonctions membres et des objets de fonction. pointeurs vers des membres de données .
Je ne vois pas pourquoi un std::function
devrait être capable de stocker un tel pointeur et je n'ai jamais entendu parler de cette fonctionnalité.
Est-il vraiment possible que j'aie manqué quelque chose ou qu'il s'agisse d'une erreur dans la documentation ?
Comment le operator()
se comporter dans un tel cas ?
Dès le [documentation](http://en.cppreference.com/w/cpp/utility/functional/function/operator()) :
Invoque la fonction appelable stockée cible avec les paramètres args.
De toute façon, il n'y a pas de cible de fonction stockée appelable à invoquer ici. Ai-je tort ?
Pour être honnête, je n'arrive même pas à déterminer quelle est la bonne syntaxe pour une telle fonction, sinon j'aurais écrit un exemple pour la tester.
Comment le modèle suivant pourrait-il être utilisé pour définir un pointeur vers un membre de données ?
template< class R, class... Args >
class function<R(Args...)>
10 votes
coliru.stacked-crooked.com/a/e7fda761edce7ece
0 votes
Désolé, j'ai mal lu. :(
0 votes
Ok, donc l'idée est la même que celle utilisée pour les méthodes membres : la signature est exactement la même, mais pour le premier paramètre qui est l'instance sur laquelle les invoquer. Une approche similaire peut être utilisée pour les membres de données, n'est-ce pas ? Intéressant.
0 votes
std::bind
peuvent être affectés à unstd::function
.0 votes
Alex Alors ?
bind
renvoie un objet appelable, c'est bon.0 votes
Le membre de données peut être un objet appelable.
1 votes
@Otomo voir l'exemple dans le premier commentaire, ce n'est pas à cause de ce que vous dites, je suis désolé.
1 votes
@skypjack Ouais, je l'ai déjà compris. C'est bon à savoir.
2 votes
@skypjack un autre exemple ?
0 votes
@PiotrSkotnicki Un bon pour sûr, encore plus avec quelques détails de contexte. C'est une prime pour le plaisir de la curiosité, donc je l'attribuerai le dernier jour, chaque exemple est le bienvenu jusqu'à ce jour. Merci. :-)