Почему я не могу отправить аргументы как ссылку на функцию потока?
У меня есть следующий код:
#include <iostream>
#include <Windows.h>
#include <thread>
#include <string>
void func(std::string& str)
{
std::string to_change("Bye...");
std::cout << "From func: " << str << std::endl;
str.swap(to_change);
}
int main()
{
std::string Meeting = "Hi!";
std::thread t1(func, Meeting);
t1.join();
std::cout << "From main: " << Meeting << std::endl;
Sleep(20000);
return 1;
}
Выход:
Из функции: Привет
Из основного: привет
Но если я делаю этот тип перемещения по ссылке:
std::ref(Meeting)
Тогда вывод идет:
Из функции: Привет
Из основного: пока...
В чем разница между отправкой обоих типов ссылок?