以下 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)?
你怎么称呼tinf(t)和f(move(t))?
什么叫返回值move(t)?
什么叫整体效果?
标准的哪些部分处理这个问题?