1
#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;
}
=>メンバー変数参照の値(lvalue
とrvalue
)はゴミになりますか?
異なるコンパイラで異なる動作が発生しています。だから、C++標準がこれについて何を言うのか知りたかったのです。クラス内のメンバー変数としての左辺値と左辺値の参照 - 有効?
'rvalue' * reference *として*データメンバ*はうまくいっていません....あなたは本当に完全な型を動かすことができません(https://stackoverflow.com/questions/14679605/do-built-in-types-have-move-semantics).. – WhiZTiM