g ++ "llamando" a una función sin paréntesis (no f () sino f;). ¿Por qué siempre devuelve 1?

En c ++ (GNU GCC g ++), mi código está "llamando" a una función sin (). La función no está funcionando, pero compila ok.

Más sorprendentemente, el código siempre devuelve 1 ...

¿Hay alguna explicación?

Esperaba que el nombre de la función fuera solo un puntero normal, pero parece que es un poco diferente ...

¿Obtuve todos los 1 solo por casualidad?

#include <iostream>
using namespace std;

void pr ()
{
    cout << "sth";
}

int main()
{

pr;
cout << pr;  // output: 1
cout << *pr; // output: 1
cout << &pr; // output: 1

}

Respuestas a la pregunta(2)

Su respuesta a la pregunta