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

时间:2015-11-26 02:24:01

标签: c++

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

void return_nothing() {}

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

直播:Wanbox

1 个答案:

答案 0 :(得分:3)

因为您使用C ++进行编程,并且在C ++中无法在那里使用返回空值的函数,并且您的编译器是(至少是近似的)C ++语言,如标准所述。

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

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

有一个小的例外:如果你有一个返回void的操作,你可以从另一个返回空值的函数return ooeratio_returning_void();。这样做是为了使一些模板元编程更容易。

“将void返回函数传递给期望无参数的函数”的问题有时也是模板元编程问题,但它是一个非常罕见的问题。你通常可以只使用一些样板来解决它。