我总是读到,std::forward
仅用于模板参数。然而,我问自己为什么。请看下面的例子:
void ImageView::setImage(const Image& image){
_image = image;
}
void ImageView::setImage(Image&& image){
_image = std::move(image);
}
这是两个基本上做同样事情的函数: 一个接受 l- 值引用,另一个接受 r- 值引用。现在,我想既然 std::forward
应该返回一个 l- 值引用(如果参数是 l- 值引用)和一个 r- 值引用(如果参数是1) ,那么这段代码可以简化成这样:
void ImageView::setImage(Image&& image){
_image = std::forward(image);
}
这有点类似于 cplusplus.com 提到的 std::forward
示例(只是没有任何模板参数)。我只是想知道,这是否正确,如果不是为什么。
我也在问自己
void ImageView::setImage(Image& image){
_image = std::forward(image);
}