は私が持っていると言う:realCat
は}
でリリースされたとして、上記でC++のオプションの参照は、オブジェクトの寿命を保持しますか?
#include <iostream>
#include "boost/optional.hpp"
struct cat
{
int paw = 4;
};
int main()
{
boost::optional<cat&> z;
{
cat realCat = cat();
z = realCat;
}
std::cout << z->paw << std::endl;
return 0;
}
、印刷するための一貫性のある結果を期待する理由は、右、ありませんか?または、optional
はrealCat
の寿命を保存しますか?
あなたはライフエクステンションを2回も理解していません。あなたのコードでは、通常のconstまたはrvalue参照でさえ寿命が延びません。 – Slava
私は少し気が狂っているが、私はまだそれがよい質問であり、実際には私が以前に足で自分自身を撃った問題であるので、私はまだupvote質問の一つ。私はまだコードベースでTODOを持っています。インタフェースをリファクタリングするために、 'optional 'を使ってもはや最適化されなくなりました。なぜなら汎用コードではあまりにも危険だからです。 –
sehe