Опитвах се да оценя как препратките към rvalue влияят на дизайна на класа. Да кажем, че имам съществуващ клас, както е показано по-долу
class X
{
string internal;
public:
void set_data(const char* s)
{
internal = s;
}
..
..
..
//other stuff
};
Този клас се използва от друг модул като този:
//another module
{
string configvalue;
X x;
//read configvalue from a file and call set
...
x.set_data(configvalue.c_str());
//use x to do some magic
..
...
}
с препратки към rvalue на място ще бъде ли по-добре да предоставите друга членска функция по този начин
class X
{
...
...
....
void set_data(string s)
{
internal = std::move(s);
}
};
Това ще позволи на клиентите от този клас да използват семантика за преместване и ще предотврати един набор от операции за разпределяне/копиране за всяка употреба. Това е силно измислен пример, но същият принцип важи ли за всички дизайни на класове, без да се нарушава парадигмата на „минималния интерфейс“.
Някой прозрения по този въпрос са високо оценени?