Visual Studio глючит при печати адреса функции?
Возьмите следующий тестовый пример:
#include <iostream>
void foo()
{}
int main()
{
std::cout << &foo << std::endl;
}
GCC 4.1.2, GCC 4.8 и GCC 4.9 (C ++ 03 и C ++ 11) вседать следующий вывод при сборке и компиляции:
$ 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
Предположительно это связано с тем, что единственная жизнеспособная вставка потока для указателя функции - это преобразование вbool
(и приведение кvoid*
потребовалось бы фактически получить адрес в потоке).
Однако Microsoft Visual Studio 2012 и 2013 вместо этого выводит адрес указателя.
Какой набор инструментов соответствует? И документировано ли несоответствие где-либо?