Moveability allows a great class of optimizations. Yet, it feels that it does this at the cost of punching a hole in the static safety of programs:
After a move, the source object is left in a valid but unspecified state, where some operations are legal, but some are not. (notably see this SO question for discussions around this topic). It would seem that this list of operations, even though it is dependent on each type, can be known at compile time. Yet, the compiler does not warn about incorrect uses of moved-from objects (as this other SO question discusses).
It felt like C++ philosophy to rely on the compiler to validate as much as possible (of what is statically known), one of many example being const-correctness enforcement. Yet, it seems that moved-from object can be used in dangerous ways, without the compiler making attempts (or having any mean) to catch them.
Is there actually a mechanism allowing better diagnostic from the compiler ? If not, why is not there a new qualifier to apply to methods that can be used on a moved from object, or another mechanism allowing equivalent static verifications ?