Я изучаю семантику перемещения, я хочу знать, какой класс лучше и почему. Я попытался подсчитать количество распределений в обоих (перегружая новый оператор). t1 выделит только один раз, t2 выделит дважды. Судя по всему, t1 кажется более оптимизированным, но имеет ли он некоторые недостатки.
class Test1
{
std::string&& s;
public:
Test1(std::string&& n)
:s(std::move(n)) {}
};
class Test2
{
std::string s;
public:
Test2(std::string&& n)
:s(std::move(n)) {}
};
int main()
{
Test1 t1("sdfds");
Test2 t2("SDf");
}