class foo
{
public:
void say_type_name()
{
std::cout << typeid(this).name() << std::endl;
}
};
int main()
{
foo f;;
f.say_type_name();
}
Над кодом печатает P3foo на моей машине ubuntu с g++. Я не понимаю, почему он печатает P3foo, а не просто foo. Если я изменил код, например
std::cout << typeid(*this).name() << std::endl;
он печатает 3foo.
Любые мысли?