3 ms·
That's not quite right since (1) it's about object lifetime, not variable scope (think of the elements of a vector), and (2) the liveness of a resource is not g
by edflsafoiewq 7y ago
That's not quite right since (1) it's about object lifetime, not variable scope (think of the elements of a vector), and (2) the liveness of a resource is not generally identical to the lifetime of any object because of things like two-step initialization or moves.
std::vector<int> v; // v's lifetime begins
// currently owns nothing, exactly as in two-step initialization
v = other_vector; // resource #1 becomes live
v = std::move(another_vector); // resource #1 dies, resource #2 becomes live
return std::move(v); // resource #2 now owned by returned object, will outlive v
// v's lifetime ends
I'd say RAII is more about making sure every resource always has an owner and that when an object dies, all the resources it owned are cleaned-up. And that works fine with two-step initialization.