I'm always perplexed that this is seen as an issue.
It isn't so much of an issue as unnecessary. It is a distinction that doesn't seem to fulfill a need.
I think dereferencing operators are kind of necessary in a language that has pointers. It's a useful abstraction upon which iterators, for example,were built.
If I remember correctly, in some early version of C (or some precursor) you had ty type (*p).foo instead of p->foo, so it's a kind of syntactic sugar. Whether plain dot should also work is almost a matter of taste (except for what Brother Bob said above), but I quite like being able to just read the code and see that a pointer is being dereferenced.
On the other hand, I am not so keen on having someone deprecate -> and cause me thousands of hours of busywork for no gain at all. I think one of the main reasons behind the success of C++ is that it almost never deprecates stuff. The last thing that people want is to have to grab all the code they already have written and tested and change it. There really are better things to do.