#include
#include
#include
#include
using namespace std;
void f(const vector& coll)
{
Is coll guaranteed to be valid before exiting this function?
coll to the constructor of a std::thread in main function, because coll is an object, it is decay copied. This decay copy essentially moves the vector (so it becomes rvalue), which will bind to the coll parameter in f during the execution of the thread. (Thanks for the comment by @Praetorian)Is it safe to pass arguments by reference into a std::thread function?
decay copied, so you actually never pass anything by reference to std::thread.Reference for std::decay: http://www.cplusplus.com/reference/type_traits/decay/
std::thread