Sagen, ich habe:Ergänzen optionale Referenzen in C++ die Lebensdauer von Objekten?
#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;
}
In den oben genannten gibt keinen Grund, ein konsistentes Ergebnis zu bedruckenden, rechts, wie die realCat
freigegeben wurde von }
zu erwarten? Oder bewahrt die optional
das Leben der realCat
?
Sie können die Lebenserweiterung nicht zweimal verstehen. In Ihrem Code verlängert selbst die normale Konstante const oder rvalue die Lebensdauer nicht. – Slava
Eine dieser Fragen, die mich ein wenig zusammenzucken lassen, aber ich stimme immer noch, weil es eine gute Frage ist, die gut gestellt wurde, und tatsächlich ist es ein Problem, das ich mir selbst mit dem Fuß zuvor geschossen habe. Ich habe immer noch eine TODO in einer Code-Basis, um eine Schnittstelle zu refactorisieren, die nicht mehr mit 'optional' optimiert wird, weil es in Allzweck-Code einfach zu gefährlich ist. –
sehe