O Visual Studio está com erros na impressão do endereço da função?
Faça o seguinte caso de teste:
#include <iostream>
void foo()
{}
int main()
{
std::cout << &foo << std::endl;
}
GCC 4.1.2, GCC 4.8 e GCC 4.9 (C ++ 03 e C ++ 11) todosdê a seguinte saída ao construir e depois 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
Isso ocorre porque a única inserção viável de fluxo para o ponteiro de função é a conversão embool
(e um elenco paravoid*
seria necessário para realmente obter um endereço no fluxo).
No entanto, o Microsoft Visual Studio 2012 e 2013 produzem um endereço de ponteiro.
Qual conjunto de cadeias de ferramentas é compatível? E a não conformidade está documentada em algum lugar?