为什么编译器不将return_nothing(return_nothing())
视为return_nothing(); return_nothing();
,因为return_nothing()
的返回类型为void
?
void return_nothing() {}
int main()
{
return_nothing(return_nothing()); // compile error
}
直播:Wanbox
答案 0 :(得分:3)
因为您使用C ++进行编程,并且在C ++中无法在那里使用返回空值的函数,并且您的编译器是(至少是近似的)C ++语言,如标准所述。
在C ++中,没有void
类型的值。 void
是没有值的类型。
将void
传递给函数是非法的,因为函数需要值。
有一个小的例外:如果你有一个返回void
的操作,你可以从另一个返回空值的函数return ooeratio_returning_void();
。这样做是为了使一些模板元编程更容易。
“将void返回函数传递给期望无参数的函数”的问题有时也是模板元编程问题,但它是一个非常罕见的问题。你通常可以只使用一些样板来解决它。