This works on every compiler I have ever tried it on (And I've tried it on many). Yes it is "undefined" but you are not dereferencing the pointer when you call a non-virtual member. You can even write code using this "feature" although purists will yell at you and call you nasty names and such.
Edit: There seems to be some confusion here about calling member functions. You are NOT dereferencing the 'this' pointer when you call a non-virtual member. You are simply using fancy syntax to pass it in as a parameter. This is with all implementations I have seen, but it's not guaranteed. If it wasn't implemented this way, your code would run slower. A member function is simply a function with and extra semi-hidden parameter. That's it! end of story. That being said there may be some compiler written by Cletus' slack jaw software Co. that has a problem with this, but I haven't run into it yet.