¿Visual Studio presenta errores al imprimir la dirección de la función?
Tome el siguiente caso de prueba:
#include <iostream>
void foo()
{}
int main()
{
std::cout << &foo << std::endl;
}
GCC 4.1.2, GCC 4.8 y GCC 4.9 (C ++ 03 y C ++ 11) todosdar el siguiente resultado al compilar y luego compilar:
$ g++ main.cpp -o test && ./test
main.cpp: In function 'int main()':
main.cpp:8:23: warning: the address of 'void foo()' will always evaluate as 'true' [-Waddress]
std::cout << &foo << std::endl;
^
1
Se supone que esto se debe a que la única inserción de flujo viable para el puntero de función es conversión abool
(y un elenco paravoid*
sería necesario para obtener realmente una dirección en la secuencia).
Sin embargo, Microsoft Visual Studio 2012 y 2013 muestran una dirección de puntero.
¿Qué conjunto de cadenas de herramientas es conforme? ¿Y se documenta la no conformidad en alguna parte?