Я всегда читаю, что std::forward
предназначен только для использования с параметрами шаблона. Однако я спрашивал себя, почему. См. Следующий пример:
void ImageView::setImage(const Image& image){
_image = image;
}
void ImageView::setImage(Image&& image){
_image = std::move(image);
}
Это две функции, которые в основном делают то же самое; один берет ссылку на l-значение, а другой - r-значение. Теперь я подумал, что, поскольку std::forward
должен возвращать ссылку l-value, если аргумент является ссылкой l-value и ссылкой r-value, если аргумент один, этот код можно упростить примерно так:
void ImageView::setImage(Image&& image){
_image = std::forward(image);
}
Какой тип похож на пример cplusplus.com упоминает для std::forward
(только без параметров шаблона). Я просто хотел бы знать, если это правильно или нет, и если не почему.
Я также спрашивал себя, что именно будет иметь значение
void ImageView::setImage(Image& image){
_image = std::forward(image);
}