Ich habe an einer ziemlich einfachen Einrichtung gearbeitet: einem gleichzeitigen Schleifenkonstrukt, das eine Liste von Eingabeelementen, einen Ausgabevektor und eine Funktion zur Berechnung der Ausgabe übernimmt Elemente aus Eingabeelementen.Kein passender Konstruktor für die Initialisierung von 'std :: thread'
Ich habe diesen Schnipsel, die nicht kompilieren lassen:
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 es zu beheben ist. Versucht, prepend &
zum thread_do
/<In, Out>
anhängt, noch nicht in Anspruch nehmen.
thread_do ist sowohl eine Template-Funktion und eine Klassenmethode. Der Konstruktor von std :: thread muss dies widerspiegeln. –
Woah, _way_ zu viel Code. Wo ist der [MCVE], mit dem Sie diesen Monat bisher debuggen? –
_ "Allerdings habe ich keine Ahnung, wie es zu beheben. Versucht, & thread_do/appending voranzustellen, noch keine zu nutzen." _ Sie könnten versuchen, die Dokumentation zu lesen, die eigentlich Ihr erster Schritt statt wild sein sollte Raten. –