Is it safe to pass arguments by reference into a std::thread function?
问题 #include <thread> #include <string> #include <vector> #include <chrono> using namespace std; void f(const vector<string>& coll) { this_thread::sleep_for(1h); // // Is coll guaranteed to be valid before exiting this function? // } int main() { { vector<string> coll(1024 * 1024 * 100); thread(f, coll).detach(); } // // I know std::thread will copy arguments into itself by default, // but I don't know whether these copied objects are still valid // after the std::thread object has been destroyed