У меня есть следующая функция внутри класса
void add_state(std::string &&st) {
state.emplace_back(st); // state is a vector
}
st
- это l-значение (в данном случае ссылка на строку), основанное на моем понимании. Если я хочу переместить st
в последний элемент в state
, я должен использовать state.emplace_back(std::move(st))
? Что произойдет, если я оставлю это так, как написано выше?
EDIT 1 (пример того, как называется add_state
):
// do a series of operations to acquire std::string str
add_state(std::move(str));
// also note that str will never be used again after passing it into add_state
Было бы лучше, если бы вместо этого я сделал add_state(std::string &st)
? В этом случае, я думаю, я могу просто позвонить с add_state(str)
?