Je suis en train de passer par référence à un fil, une variable définie comme:ne peut pas passer par référence à fil
zmq::context_t context(1);
comme ceci:
t[thread_nbr] = std::thread(worker_routine, (void *)&context, trained_images);
Cependant, quand je fais que je reçois la erreur suivant:
/usr/include/c++/5/functional:1505:61: error: no type named ‘type’ in ‘class std::result_of<void* (*(void*, std::vector<TrainedImage>))(void*, std::vector<TrainedImage>&)>’
typedef typename result_of<_Callable(_Args...)>::type result_type;
^
/usr/include/c++/5/functional:1526:9: error: no type named ‘type’ in ‘class std::result_of<void* (*(void*, std::vector<TrainedImage>))(void*, std::vector<TrainedImage>&)>’
_M_invoke(_Index_tuple<_Indices...>)
Si je tente de faire std::ref()
avec elle, je reçois une erreur de fonction supprimée.
Est-ce que quelqu'un sait ce que je peux faire?
ce qui est la signature de 'worker_routine'? – user463035818
[Off Topic] Vous ne devriez vraiment pas avoir besoin de lancer quelque chose à 'void *' quand vous travaillez avec 'std :: thread'. Il est conçu pour fonctionner avec le système de type. – NathanOliver
Pouvez-vous s'il vous plaît essayer de créer un [Exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) et nous montrer? Y compris la déclaration (au moins) de 'worker_routine' et' trained_images'. –