当一个函数名被发送到不带括号的 cout 时,编译器如何确定在运行时输出什么值? C++

How does the compiler determine what value to output during runtime when a function name is sent to cout without parenthesis? C++

#include <iostream>

int returnFive()
{
   return 5;
}

int main()
{
   std::cout << returnFive << '\n';
   return 0;
}

由于编译没有错误,系统如何确定实际发送并打印到控制台的值?

想象一下,如果编写的代码是这样的

if(returnFive)
  returnFive();

这里期望编译器检查 returnFive 的函数指针是否为 nullptr

这里的编译器将函数指针作为布尔表达式求值,判断它是否为 NULL 并打印输出。

https://godbolt.org/z/Psdc69。您可以检查 cout 是否被传递给 (bool).