El estándar de C++ 11 dice
5.10 Operadores de igualdad
Punteros del mismo tipo (después de las conversiones de puntero) se pueden comparar por la igualdad Dos punteros del mismo tipo se comparan igual si y solo si son ambos nulos, ambos apuntan a la misma función, o ambos representan la misma dirección (3.9.2).
Si no tiene ningún puntero a las funciones, es posible que tengan la misma dirección, pero no lo sabríamos. Si son comparando punteros a dos funciones diferentes, no deben comparar igual.
Una causa de confusión podría ser que los compiladores de MSVC son conocidos para combinar código para funciones de plantilla que suceden para producir código de máquina idéntico para diferentes tipos (como int
y long
). Esto no es compatible.
Sin embargo, esto es para funciones con diferentes firmas, y no es exactamente de lo que se trata esta pregunta.
El último comentario no tiene sentido ahora. Para diferentes tipos de argumentos, tiene punteros de función diferentes, por lo que la regla sobre "Dos punteros [de función] del mismo tipo" ya no se aplica. – MSalters
Eso es verdad. Se trata más bien de un caso en el que hemos visto que diferentes funciones * pueden * obtener la misma dirección, pero no realmente de lo que se pregunta la pregunta, –