Remix.run Logo
nixpulvis 3 days ago

In practice it just means a lot of sentinel values and unuseful potential accesses.

jandrewrogers 3 days ago | parent [-]

Not really. In the vast majority of cases this is all elided. There is no cost, either in lines of code or runtime.

When you are decoupling memory lifetimes from object lifetimes it is pretty explicit. It isn't like this sneaks into your code on its own. You have to manage the implications of it yourself.

nixpulvis 3 days ago | parent [-]

It's not about cost of correct code, it's about accidental wrong code.

jandrewrogers 3 days ago | parent [-]

That’s really not a thing. By default it is correct, you have to go out of your way to make it incorrect.

nixpulvis 2 days ago | parent [-]

It's actually really easy...

std::vector<int> a = {1,2,3};

// Added this without thinking about future uses of a.

std::vector<int> b = std::move(a);

use_vec(b);

// ...

use_vec(a);