右值和左值引用作为 class 中的成员变量 - 有效吗?

Rvalue and lvalue references as member variable in a class - Valid?

#include <iostream>
#include <string>
#include <vector>

class X
{
  public:
  int& a;
  int&& b;

  X(int& c, int && d):a(c), b(std::move(d))
  {

  }
};

X* x = nullptr;
void fun()
{

    std::cout<<"Fun\n";
    int l = 8;
    int r = 9;
    std::cout << &(l) << std::endl;
    std::cout << &(r) << std::endl;
    x = new X(l, std::move(r));    
}

int main()
{
  fun();

  std::cout << x->a << std::endl;
  std::cout << &(x->a) << std::endl;

  std::cout << x->b << std::endl;
  std::cout << &(x->b) << std::endl;

}

=>成员变量引用(lvaluervalue)的值会是垃圾吗?
我看到不同编译器的行为不同。所以想知道 c++ 标准对此有何评论。

您将引用成员绑定到局部变量,这些变量将在退出函数时销毁 fun()。在那之后,两个引用都变成悬垂的,对它们的任何取消引用都会导致 UB。

左值和右值引用成员都是如此。