Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
12.08.2021, 22:37
|
|||
|---|---|---|---|
|
|||
std::forward Тонкости |
|||
|
#18+
Код: plaintext 1. 2. Поясните пожалуйста зачем здесь std::remove_reference<T> Ведь даже если это убрать должен сработать Reference - collapsing Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2021, 03:07
|
|||
|---|---|---|---|
std::forward Тонкости |
|||
|
#18+
Нет. В данном случае, тип параметра t становится "чистым" без ссылок вообще. А reference collapsing это совершенно другой зверек. Если убрать remove_reference и у тебя в качестве T пойдет какой-нибудь A&, то тип параметра t останется T& - одинарная ссылка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2021, 11:18
|
|||
|---|---|---|---|
|
|||
std::forward Тонкости |
|||
|
#18+
White Owl Нет. В данном случае, тип параметра t становится "чистым" без ссылок вообще. А reference collapsing это совершенно другой зверек. Если убрать remove_reference и у тебя в качестве T пойдет какой-нибудь A&, то тип параметра t останется T& - одинарная ссылка. Ну вот представим себе что у нас есть некоторое l-value и мы на нем запускаем forward Что в таком Код: plaintext 1. 2. что в таком Код: plaintext 1. 2. будет вызван этот же самый forward ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2021, 12:26
|
|||
|---|---|---|---|
|
|||
std::forward Тонкости |
|||
|
#18+
Второй случай не будет компилироваться довольно часто с ошибкой "недопустимый тип". Особенно если для него использовать decltype(auto). Для стандартных темплейтов это неприемлемо. Поэтому в STL вот такие костыли на каждом первом шагу. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2021, 12:33
|
|||
|---|---|---|---|
|
|||
std::forward Тонкости |
|||
|
#18+
Dimitry Sibiryakov Второй случай не будет компилироваться довольно часто с ошибкой "недопустимый тип". Особенно если для него использовать decltype(auto). Для стандартных темплейтов это неприемлемо. Поэтому в STL вот такие костыли на каждом первом шагу. А можно привести пример когда такой шаблон не скомпилируется ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2021, 12:47
|
|||
|---|---|---|---|
|
|||
std::forward Тонкости |
|||
|
#18+
Как-то так: Код: sql 1. 2. 3. 4. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2021, 20:44
|
|||
|---|---|---|---|
std::forward Тонкости |
|||
|
#18+
Dimitry Sibiryakov, Вы же говорили, что программируете на "C with classes". Откуда у Вас такие познания? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2021, 22:01
|
|||
|---|---|---|---|
|
|||
std::forward Тонкости |
|||
|
#18+
petravОткуда у Вас такие познания? "О, сколько нам открытий чудных" готовит граблями усеянное поле. Данный пример - из попытки использовать google protobuf. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.08.2021, 11:53
|
|||
|---|---|---|---|
std::forward Тонкости |
|||
|
#18+
shellye, да какие тут тонкости?! std::forward() используется для проброса значения шаблонного параметра (prvalue) в виде right-reference (xvalue). Для всего остального используется std::move(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.08.2021, 21:08
|
|||
|---|---|---|---|
|
|||
std::forward Тонкости |
|||
|
#18+
rdb_dev shellye, да какие тут тонкости?! std::forward() используется для проброса значения шаблонного параметра (prvalue) в виде right-reference (xvalue). Для всего остального используется std::move(). Зачем тут T&& forward( typename std::remove_reference<T>::type& t ) noexcept; нужен std::remove_reference<T> ? Ведь можно просто написать T&& forward( T& t ) noexcept; В чем разница ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2021, 10:25
|
|||
|---|---|---|---|
|
|||
std::forward Тонкости |
|||
|
#18+
shellye, Скорее всего это сделано чтобы отключить вывод типов шаблона, чтобы не дать вызвать std::forward без инстанцирования (что привело бы к неверному и опасному результату - lvalue ссылки бы превращались в rvalue). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2021, 15:23
|
|||
|---|---|---|---|
std::forward Тонкости |
|||
|
#18+
shellye, не занимайся фигнёй! Лучше почитай, что такое "Perfect Forwarding" . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.08.2021, 14:10
|
|||
|---|---|---|---|
|
|||
std::forward Тонкости |
|||
|
#18+
rdb_dev shellye, не занимайся фигнёй! Лучше почитай, что такое "Perfect Forwarding" . Не поверишь именно этим и занимался А в чем ты видишь занятие фигней ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&tablet=1&tid=2017176]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 277ms |
| total: | 413ms |

| 0 / 0 |
