Jakie jest uzasadnienie dla std :: bind i std :: thread zawsze kopiujące argumenty?

Dobrze wiadomo, że domyślne zachowanie std :: bind i std :: thread polega na tym, że skopiuje (lub przeniesie) przekazane do niego argumenty i aby użyć semantyki odniesienia, będziemy musieli użyć opakowań referencyjnych.

Czy ktoś wie, dlaczego to powoduje dobre zachowanie domyślne? Esp. w C ++ 11 z referencją rvalue i doskonałym przekazywaniem wydaje mi się, że bardziej sensowne jest po prostu perfekcyjne przekazywanie argumentów.

std :: make_shared nie zawsze jednak kopiuje / przenosi, ale po prostu idealnie przekazuje dostarczone argumenty. Dlaczego są tutaj dwa pozornie różne zachowania w zakresie przekazywania argumentów? (std :: thread i std :: bind, które zawsze kopiują / przenoszą vs std :: make_shared, które nie)

questionAnswers(5)

yourAnswerToTheQuestion