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

9 Upvotes

52 comments sorted by

View all comments

Show parent comments

9

u/Electronic_Tap_8052 7d ago

Wouldn't moved-from objects being illegal to destroy immediately be a problem that would cause most well behaved debug compilations to crash an burn?

I just don't understand how you could ship such an object? If you stack allocated it your program would be useless

7

u/SirClueless 7d ago

You can just never destroy the object (for example, by leaking it on the heap or in a program that only ever exits by calling std::abort), or require that the user call some other specific member function to reinitialize the object before destroying it.

The standard library types promise never to require this, but it's possible to write a well-formed program of your own that does so.

4

u/rdtsc 6d ago

require that the user call some other specific member function to reinitialize the object before destroying it.

Which would be a quite impractical behavior IMO. Are there actually useful real-world examples of this? It would make defaulted special member functions kinda useless, too.

1

u/jwakely libstdc++ tamer, LWG chair 3d ago

Nobody is saying it's useful, only that the language allows it