É legal C ++ para testar o ponteiro this em uma função de membro?

Eu tenho um aplicativo envolvendo objetos de diferentes tipos de classe. Os objetos são referenciados por ponteiros. Um ponteiro nulo significa que o objeto associado não existe. Atualmente, os códigos de chamada são complicados, porque cada vez que ele usa um ponteiro para um objeto, ele testa o valor do ponteiro para null e toma alguma ação apropriada que é nulo. Como a ação padrão a ser tomada no caso de não-existência depende do tipo de objeto, eu preferiria codificá-la nas classes para os objetos em vez de no programa de chamada. Isso resulta em construções como as seguintes:

class C
{ ... 
  void member_func() //non-virtual !
  { if (this) { do something with the object ... }
    else { take some default action }
  }
  ...
};

Claramente, a função de membro não pode ser virtual, porque a tabela de consulta não existe quando o objeto não existe e a chamada virtual falharia. Mas este código é C ++ legal para funções de membros não virtuais? Parece funcionar corretamente para os compiladores que experimentei, mas estou preocupado com possível não-portabilidade. No padrão, não consigo encontrar uma cláusula que expressamente permita ou proíba expressamente tais construções.

questionAnswers(5)

yourAnswerToTheQuestion