Почему я должен использовать std :: forward?

В коде ниже, почему я должен использовать ---- +: = 0 =: + ---- при передаче аргументов?Код с или без ---- +: = 2 =: + ---- не показывает копирование /перемещение.
4 голоса | спросил Dean 24 +04002014-10-24T18:58:38+04:00312014bEurope/MoscowFri, 24 Oct 2014 18:58:38 +0400 2014, 18:58:38

1 ответ


0
Есть много хороших постов о том, что ---- +: = 0 =: + ---- делает и как это работает (например, здесь и здесь ).В двух словах, он сохраняет категорию значений своего аргумента .Идеальная переадресация гарантирует, что аргумент, предоставленный функции, будет перенаправлен в другую функцию (или использован внутри функции) с той же категорией значений (в основном, r-значение против l-значения), как было изначально предоставлено .Обычно он используется с шаблонными функциями, где могло произойти сворачивание ссылок (включая универсальные /пересылочные ссылки).Рассмотрим пример кода ниже.Удаление ---- +: = 1 =: + ---- выведет на печать ---- +: = 2 =: + ---- и добавление ---- +: = 3 =: + ---- распечатывает ---- +: = 4 =: + ---- .---- +: = 5 =: + ---- перегружается в зависимости от того, является ли это значением или значением l.Вызов его без ---- +: = 6 =: + ---- вызывает неправильную перегрузку.---- +: = 7 =: + ---- требуется в этом случае, так как ---- +: = 8 =: + ---- вызывается со значением r.
ответил Niall 24 +04002014-10-24T19:17:39+04:00312014bEurope/MoscowFri, 24 Oct 2014 19:17:39 +0400 2014, 19:17:39

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132