【发布时间】:2015-09-27 09:42:27
【问题描述】:
据我了解,std::forward<T>(x) 等同于static_cast<T&&>(x)。
但据我所见,static_cast<T>(x) 似乎做了同样的事情,如下图code 所示
因此,我的问题是为什么 std::forward<T> 实现为 static_cast<T&&>(x),而不是 static_cast<T>(x),如果两者具有相同的效果?
【问题讨论】:
-
你没有尝试使用
int&。 -
@Quentin 在这种情况下,它总是返回一个左值。
-
static_cast<T>会创建一个右值的副本 -
因为你想转发引用而不是值
-
尝试使用一个类,您将在其中检测副本并移动 ctor 以产生输出,并观察差异。
标签: c++ c++11 perfect-forwarding