以下 C++11 代码无法编译:
struct T {};
void f(T&&) { }
void g(T&& t) { f(t); }
int main()
{
g(T());
}
正确的方法是:
void g(T&& t) { f(move(t)); }
这很难用正确的自然语言术语来解释。该参数t
似乎失去了它需要恢复的“&&”状态std::move
。
你叫T()
什么g(T())
?
你叫T&&
什么g(T&& t)
?
你叫t
什么g(T&& t)
?
你怎么称呼t
inf(t)
和f(move(t))
?
什么叫返回值move(t)
?
什么叫整体效果?
标准的哪些部分处理这个问题?