kein passender Konstruktor für die Initialisierung von 'std :: thread'

Ich habe an einer ziemlich einfachen Einrichtung gearbeitet: einer gleichzeitigenfor Schleifenkonstrukt, das eine Liste von Eingabeelementen, einen Ausgabevektor und eine Funktion verwendet, die Ausgabeelemente aus Eingabeelementen berechnet.

Ich habe dieses Snippet, das nicht kompiliert wird:

            template<class In, class Out>
            void thread_do(net::coderodde::concurrent::queue<In>& input_queue,
                           Out (*process)(In in),
                           std::vector<Out>& output_vector)
            {
                // Pop the queue, process, and save result.
                ...
            }


                for (unsigned i = 0; i < thread_count; ++i) 
                {
                    thread_vector.push_back(std::thread(thread_do, 
                                                        input_queue,
                                                        process,
                                                        output_vector));
                }

Ich benutze-std=c++14.

./concurrent.h:129:45: error: no matching constructor for initialization of 'std::thread'
                    thread_vector.push_back(std::thread(thread_do, 
                                            ^           ~~~~~~~~~~

Allerdings habe ich keine Ahnung, wie ich es beheben soll. Versucht, @ voran zu stell& zumthread_do / anhängen<In, Out>, noch nicht verfügbar.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage