typeid() retourne les caractères supplémentaires dans g++

class foo
{
public:
  void say_type_name()
  {
    std::cout << typeid(this).name() << std::endl;
  }
};

int main()
{
  foo f;;
  f.say_type_name();
}

Code ci-dessus imprime P3foo sur ma machine ubuntu avec g++. Je ne reçois pas pourquoi c'est l'impression P3foo au lieu de simplement foo. Si je change le code comme

    std::cout << typeid(*this).name() << std::endl;

il imprime 3foo.

Toutes les pensées?