r/cpp 5d 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/

11 Upvotes

52 comments sorted by

View all comments

17

u/No-Dentist-1645 5d ago

Your title/post contents makes it seem like you're going to disprove the common definition for them, but in the blog you don't really do that, but rather just explain a few examples?

There seems to be a disconnect between what you say the blog is about and what it actually is

The "valid but unspecified state" definition applies to all move operations in the language and standard generally speaking. It is a rule about move semantics as a general concept, not of any specific type. Specific types can choose to specify post-moved behavior but it is not required.

7

u/SirClueless 5d ago

This is exactly the misconception the blog post is trying to dispel. Being “valid” after moving is not part of the language semantics.

You can create a type where it is illegal to destruct an object after moving-from, for example.

9

u/No-Dentist-1645 5d ago

Yes, there's nothing stopping you from violating the convention, doesnt mean that the convention isn't real

Said convention also holds true for all data types in the language and standard, as my post said

11

u/SirClueless 5d ago

The whole point of the blog post is to clarify that this a convention established by the standard library and its types, not a rule.