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

Why can not pass void to function with no parameters?

本文关键字:参数 函数 不能 void 为什么      更新时间:2023-10-16

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

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

Live:Wanbox

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

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

void传递给函数是非法的,因为函数会取值。

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

"将一个void返回函数传递给一个不需要参数的函数"的问题有时也是一个模板元编程问题,但这是一个罕见的问题。你通常只需要一点样板就可以解决这个问题。