c++ - 为什么不能将 void 传递给没有参数的函数?

标签 c++

为什么编译器不将 return_nothing(return_nothing()) 视为 return_nothing(); return_nothing();因为return_nothing()的返回类型是void

void return_nothing() {}

int main()
{    
    return_nothing(return_nothing()); // compile error
}

直播:Wanbox

最佳答案

因为您正在使用 C++ 进行编程,并且在 C++ 中不能使用返回 void 的函数,并且您的编译器是(至少是近似的)标准所描述的 C++ 语言。

在 C++ 中,没有 void 类型的值。 void 是没有值的类型。

void 传递给函数是非法的,因为函数需要值。

有一个小异常(exception):如果您有一个返回 void 的操作,则可以从另一个返回 void 的函数返回 ooeratio_returning_void();。这样做是为了使一些模板元编程更容易。

“将返回 void 的函数传递给不需要参数的函数”的问题有时也是一个模板元编程问题,但这种情况要少得多。您通常只需使用一些样板文件就可以解决这个问题。

关于c++ - 为什么不能将 void 传递给没有参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33929618/

相关文章:

c++ - `std::bind()` 标准库算法如何实现?

c++ - 在单向链表的特定位置插入

C++ 设置 "flags"

c++ - CSV 解析器适用于 Windows,不适用于 Linux

c++ - 使用 boolean 函数在 C++ 中确定所有二维点是否在线或圆上

c++ - tr1::reference_wrapper 有什么用?

c++ - 正在编译具有相同迭代器的嵌套循环,这是为什么?

c++ - 无法删除类的析构函数中指向数组的成员指针

c# - Windows Mobile以编程方式保持通话

c++ - 有关 Linux/POSIX 中特定于平台的宏的文档