Stack Overflowの質問Does a const reference prolong the life of a temporary?で、一時参照オブジェクトの寿命を延ばす方法を理解しています。C++の右辺参照は一時オブジェクトの寿命を延ばします
私は、一時的なオブジェクトの寿命も延ばすことができることを知っていますが、いくつかの違いがあるかどうかはわかりません。
もしそうなら、このようなIコード:#include <string>
#include <iostream>
using namespace std;
class Sandbox
{
public:
Sandbox(string&& n) : member(n) {}
const string& member;
};
int main()
{
Sandbox sandbox(string("four"));
cout << "The answer is: " << sandbox.member << endl;
return 0;
}
が、それは動作しますか、それは上記のリンクのように同じエラーを持っているのだろうか?
次のようなコードを作成するとどうなりますか?
class Sandbox
{
public:
Sandbox(string&& n) : member(move(n)) {}
const string&& member;
};
正常に動作しますか?
一時的な存続期間は、それに直接バインドする参照の有効期間と一致します。これは 'n'(メンバーではありません)です。 –
@ M.M' string && member'は意味がありますか? – songyuanyao
@ M.M私は、メンバーの値の参照を変更してOPコードを有効にすることを意味しましたか?一時的な文字列( "four")の寿命は、声明文まで延長されていますか? – songyuanyao