Обновить
10
0
Константин Паньков@Explorus

C++ разработчик

Отправить сообщение

За совет спасибо! Я подумаю как тут лучше описать.

И кстати, forward преобразует lvalue в rvalue, только если передали аргумент как rvalue. Поэтому просто описать его работу одной и понятной фразой - сложная задача. Это move выполняет всегда cast к rvalue, а forward использует static_cast и сжатие ссылок. forward передает lvalue как l-value, а к rvalue применяет move, то есть приводит к rvalue;

Теперь понял. Это косяк, конечно. Обязательно поправлю. Спасибо большое!

Согласен. Где-то читал, что было предложение использовать то ли rvalue_cast, то ли cast_rvalue. Не суть уже. Универсальные ссылки тоже не устроили комитет. На cppcon2014 приняли решение именовать их как forwarding references.

В том же абзаце чуть ранее: если в качестве аргумента передано rvalue, то T выводится как бессылочный тип. Именно этот фокус и обеспечивает правильную работу forward.

_Val является l-value, т.к. имеет имя и нее можно взять адрес в памяти. Поэтому ее нужно далее сделать r-value с помощью std::move. Пожалуй, надо дополнить статью этим моментом. Спасибо!

Кроссплатформенное решение в первую очередь. Вариантов существует масса, и мне интересен опыт использования и, в частности, подводные камни.

Спасибо за статью, но, честно говоря, прочитав заголовок, я ожидал немного другое. Тут скорее "Пример плагиновой архитектуры приложения с использованием WinAPI и C++"

А кто-нибудь может пояснить, почему в классах члены заканчиваются подчеркиванием, а в структурах вдруг нельзя?
Мне лично привычнее добавлять впереди «m_», и сразу понятно, что у нас тут используется, простите, член.

Информация

В рейтинге
6 127-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
Ведущий
C++
C++ stl
Linux
Git
Cmake
Кросс-платформенная разработка
Алгоритмы и структуры данных
Оптимизация кода
SQL
Python