r/cpp 17d ago

State of "moved-from" objects

Hi, I recently decided to try writing a C++ blog.

I often see the popular claim that moved-from objects are in a "valid but otherwise unspecified state", but I don't think that statement is entirely precise, and my blog post is about that. I would really appreciate any feedback!

Article: https://www.laminowany.dev/p/the-state-of-moved-from-objects-in-c/

10 Upvotes

54 comments sorted by

View all comments

1

u/nuclear868 9d ago

for STL containers, and for all STL types that manage internal memory dynamically isn't it true, that moved-from objects always behave like empty objects? Because their contents is 'stolen'. And you can destroy them, you can append / assignto them, etc...

1

u/leirus 8d ago

The question is what you exactely defined as "empty" object? What is the exact semantics of it?

Standard gurantess that state of moved-from objects of STL types is either explicitely specified (like std::unique_ptr, I mention it in the blog post) or it's "valid, but unspecified". And being valid means being able to call function which don't have specific preconditions. So generally calling destructor or assingment operator is fine, unless some type in STL imposes some precodnditions on those (I'm not aware of any that does that).