It's 'update', so it's definitely not 'drawing'
It is update but not logic update. That's the point : anything related to visuals (except debug drawing, which is for debug so it can be crapped up) happens in draw() and anything related to game logic happens in Run() or in collision callbacks from box2d. Moving pre-draw update into run can't happen because it'd mix these two unrelated things(now any mistakes can be traced like: -> turn debug drawings on, is sprite at same position as body ->yes = Run(logic) is messed and bodies are at wrong positions, no-> draw(displaying) is messed and graphical representations are at wrong positions),not everything that can be drawn can be Ran and Run() and draw() cycles are not synchronized(they are on 60 fps but it's not requirement and framerate doesn't affect speed of game simulation).
So what do you expect from this discussion?
I'm wondering what is most 'clean' and reasonable way to handle that besides breaking const that people use.
Update proc dedicated to pre-drawing updates beats the point of inheriting from drawable instead of making own public Draw(sf::RenderTarget& target,sf::RenderStates states) without const and putting draw and update there since at some point we would need to know the real type to call our pre-drawing anyway.
and I think you agree with that when you say
Part of the problem(which makes it a rare problem most people might not face?) is I don't iterate through entities to update their positions and don't have chance to update their sprites then.