За совет спасибо! Я подумаю как тут лучше описать.
И кстати, 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_», и сразу понятно, что у нас тут используется, простите, член.
За совет спасибо! Я подумаю как тут лучше описать.
И кстати, 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_», и сразу понятно, что у нас тут используется, простите, член.