Passing a reference to a thread

suggest change

You cannot pass a reference (or const reference) directly to a thread because std::thread will copy/move them. Instead, use std::reference_wrapper:

void foo(int& b)
    b = 10;

int a = 1;
std::thread thread{ foo, std::ref(a) }; //'a' is now really passed as reference

std::cout << a << '\n'; //Outputs 10
void bar(const ComplexObject& co)

ComplexObject object;
std::thread thread{ bar, std::cref(object) }; //'object' is passed as const&

std::cout << object.getResult() << '\n'; //Outputs the result

Feedback about page:

Optional: your email if you want me to get back to you:

Table Of Contents