1

假设我有以下功能:

void f2(int&& i)
{
    puts("f2(int&& i)");
}

void f(int&& i)
{
    puts("f(int&& i)");
    f2(i);
}

发出的编译器错误是:

错误 C2664:“void f2(int &&)”:无法将参数 1 从“int”转换为“int &&”

消息:您不能将左值绑定到右值引用

如果你int&& 再次调用它,它会起作用std::move()

void f(int&& i)
{
    puts("f(int&& i)");
    f2(std::move(i));
}

但这不应该是必要的吗?在我看来,接收到的变量f(int&& i)是一个 xvalue。如果f接收int&&,那么我们应该能够传递它,不是吗?

仍然是左值如何int&&接收?f

4

0 回答 0