Пусть имеется банальный код:
void foo(){}
int main(){
std::cout << foo;
}
Вывод на консоль: 1. Я не понимаю почему так, ведь foo в данном случае функция и должна вывести адрес, который уж точно не равен единице.
Перегрузки оператора << для вывода адреса функций нет. Зато есть перегрузка для вывода bool. Соответственно адрес функции неявно преобразуется в bool. Вывести значение адреса можно явно преобразовав указатель на функцию к указателю на void (перегрузка оператора << для которого как раз печатает значение адреса):
std::cout << reinterpret_cast<void *>(&foo);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей