C++从非右值对象访问右值引用的对象

C++ access rvalue referenced object from non rvalue object

本文关键字:对象 引用 访问 C++      更新时间:2023-10-16

这个问题听起来可能很愚蠢。我只是想确定一下。也许有人给我指出了标准中描述的地方

我们不能在左值中有右值引用的对象。正确的

struct A{int value;};
struct B{
    B(A &&value) : a(std::forward<A>(value)){}
    A&& a;
};
int main()
{
    // allowed
    B(A()).a;
    // error
    B b(A());
    b.a;
    return 0;
}

http://coliru.stacked-crooked.com/a/ea6bd617d421a8b8

B b(A());声明了一个函数(最麻烦的解析(。你得到了一个编译器错误,因为b没有成员a。

要解决此问题,请改用B b{A()}