Compliance with static or non-static effects affects the type of function. Non-static member functions have an implicit this parameter, but not for static functions. For instance,
In other words, there is a significant qualitative difference between static and non-stationary member functions. The compiler cannot "output" this. This is a matter of intention of the author.
If I want (and need) my function to be non-static, I make it non-static, even if it does not have access to non-stationary members of the class. If the compiler hardly decides to make static static just because it does not have access to non-stationary members of the class, in general it will destroy the functionality of the code.
source share