Calling ``++std::move++`` on objects that cannot be moved is suspicious and might hide nasty performance bug.
This can happen when calling ``++std::move++`` with const argument or with non-movable types.
This can also happen when passing the result of ``++std::move++`` as a const reference argument. In this case, no object will be moved since the result is in a context where calling the move constructor is not possible. It makes sense to call ``++std::move++`` on a function argument when:
* The result of ``++std::move++`` is passed as an r-value reference.
* The result of ``++std::move++`` is passed by copy.
* https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es56-write-stdmove-only-when-you-need-to-explicitly-move-an-object-to-another-scope[{cpp} Core Guidelines ES.56] - Write "std::move()" only when you need to explicitly move an object to another scope