Должны ли мы всегда использовать универсальную ссылку для передачи параметра 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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