Должны ли мы всегда использовать универсальную ссылку для передачи параметра Std :: String в таком сценарии?C++

Программы на C++. Форум разработчиков
Anonymous
Должны ли мы всегда использовать универсальную ссылку для передачи параметра Std :: String в таком сценарии?

Сообщение Anonymous »

В Pre-C ++ 20 есть два основных способа передачи параметра std :: string следующим образом:

Код: Выделить всё

struct A1 {
std::string s;
A1(std::string s) : s(std::move(s)) {}
};

struct A2 {
std::string s;
A2(std::string const& s) : s(s) {}
A2(std::string&& s) : s(std::move(s)) {}
};
Оба A1 и A2 имеют свои собственные плюсы и минусы: A1 является кратким, но менее эффективным, чем A2 ; A2 более эффективен, но и более утомите.

Код: Выделить всё

struct A3 {
std::string s;

template
requires std::same_as
A3(T&& s) : s(std::forward(s)) {}
};
< /code>
A3
кажется кратким и эффективным. Должен ли это быть рекомендуемым выбором в таком сценарии?

Подробнее здесь: https://stackoverflow.com/questions/796 ... er-in-such

Вернуться в «C++»