J'essaie d'utiliser la librairie de threads de boost. Son constructeur prend
un fonctor "nullaire" (qui n'attent pas d'argument) pour définir le point
d'entrée du thread. Je voudrais que le point d'entrée de mon thread soit une
fonction membre Foo::bar(), sur l'objet this. Je me suis dit que le code
créerait le fonctor unaire kivabien : std::bind1st(std::mem_fun(&Foo::bar),
this).
Mais celà ne compile pas (à juste raison) puisqu'il est indiqué dans la doc
que std::bind1st remplace le premier argument d'un fonctor binaire par la
valeur fournie. Or mon fonctor est unaire...
Pourquoi il n'existe pas une version de bind1st qui accepte un fonctor
unaire (il me semble que ca serait bien utile, mon cas ne doit pas être
isolé) et quel code valide va me créer mon fonctor ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Loïc Joly
Bonjour,
J'essaie d'utiliser la librairie de threads de boost. Son constructeur prend un fonctor "nullaire" (qui n'attent pas d'argument) pour définir le point d'entrée du thread. Je voudrais que le point d'entrée de mon thread soit une fonction membre Foo::bar(), sur l'objet this. Je me suis dit que le code créerait le fonctor unaire kivabien : std::bind1st(std::mem_fun(&Foo::bar), this).
Mais celà ne compile pas (à juste raison) puisqu'il est indiqué dans la doc que std::bind1st remplace le premier argument d'un fonctor binaire par la valeur fournie. Or mon fonctor est unaire...
Pourquoi il n'existe pas une version de bind1st qui accepte un fonctor unaire (il me semble que ca serait bien utile, mon cas ne doit pas être isolé) et quel code valide va me créer mon fonctor ?
Quant à utiliser boost, utilise aussi boost::bind qui est bien plus simple et puissant que bind1st...
-- Loïc
Bonjour,
J'essaie d'utiliser la librairie de threads de boost. Son constructeur prend
un fonctor "nullaire" (qui n'attent pas d'argument) pour définir le point
d'entrée du thread. Je voudrais que le point d'entrée de mon thread soit une
fonction membre Foo::bar(), sur l'objet this. Je me suis dit que le code
créerait le fonctor unaire kivabien : std::bind1st(std::mem_fun(&Foo::bar),
this).
Mais celà ne compile pas (à juste raison) puisqu'il est indiqué dans la doc
que std::bind1st remplace le premier argument d'un fonctor binaire par la
valeur fournie. Or mon fonctor est unaire...
Pourquoi il n'existe pas une version de bind1st qui accepte un fonctor
unaire (il me semble que ca serait bien utile, mon cas ne doit pas être
isolé) et quel code valide va me créer mon fonctor ?
Quant à utiliser boost, utilise aussi boost::bind qui est bien plus
simple et puissant que bind1st...
J'essaie d'utiliser la librairie de threads de boost. Son constructeur prend un fonctor "nullaire" (qui n'attent pas d'argument) pour définir le point d'entrée du thread. Je voudrais que le point d'entrée de mon thread soit une fonction membre Foo::bar(), sur l'objet this. Je me suis dit que le code créerait le fonctor unaire kivabien : std::bind1st(std::mem_fun(&Foo::bar), this).
Mais celà ne compile pas (à juste raison) puisqu'il est indiqué dans la doc que std::bind1st remplace le premier argument d'un fonctor binaire par la valeur fournie. Or mon fonctor est unaire...
Pourquoi il n'existe pas une version de bind1st qui accepte un fonctor unaire (il me semble que ca serait bien utile, mon cas ne doit pas être isolé) et quel code valide va me créer mon fonctor ?
Quant à utiliser boost, utilise aussi boost::bind qui est bien plus simple et puissant que bind1st...
-- Loïc
Vincent Lascaux
Quant à utiliser boost, utilise aussi boost::bind qui est bien plus simple et puissant que bind1st...
Effectivement, je m'appercoit de la facilité d'utilisation de boost::bind et je me demande comment on peut encore utiliser les mem_fun et autre bind1st et bind2nd de la STL quand on a cet outil :)
Merci pour le tuyaux... Je me demande toujours si ce que je voulais faire est possible avec la STL uniquement (en fait je suis en train de me dire que les fonctor ont été introduit pour les algo de la STL et que ces algos demandent presque tous des fonctors unaires ou binaires, donc peut être qu'on ne peut pas créer de fonctor "nullaire" avec la STL).
-- Vincent
Quant à utiliser boost, utilise aussi boost::bind qui est bien plus simple
et puissant que bind1st...
Effectivement, je m'appercoit de la facilité d'utilisation de boost::bind et
je me demande comment on peut encore utiliser les mem_fun et autre bind1st
et bind2nd de la STL quand on a cet outil :)
Merci pour le tuyaux... Je me demande toujours si ce que je voulais faire
est possible avec la STL uniquement (en fait je suis en train de me dire que
les fonctor ont été introduit pour les algo de la STL et que ces algos
demandent presque tous des fonctors unaires ou binaires, donc peut être
qu'on ne peut pas créer de fonctor "nullaire" avec la STL).
Quant à utiliser boost, utilise aussi boost::bind qui est bien plus simple et puissant que bind1st...
Effectivement, je m'appercoit de la facilité d'utilisation de boost::bind et je me demande comment on peut encore utiliser les mem_fun et autre bind1st et bind2nd de la STL quand on a cet outil :)
Merci pour le tuyaux... Je me demande toujours si ce que je voulais faire est possible avec la STL uniquement (en fait je suis en train de me dire que les fonctor ont été introduit pour les algo de la STL et que ces algos demandent presque tous des fonctors unaires ou binaires, donc peut être qu'on ne peut pas créer de fonctor "nullaire" avec la STL).