从空虚函数返回到另一个虚函数是否在C++中合法?

从空虚函数返回到另一个虚函数是否在C++中合法?,c++,recursion,C++,Recursion,C标准就是这样。但是我不确定C++标准是怎么说的。 #include <iostream> void bar() { std::cout << "From Bar" << "\n"; } void foo() { std::cout << "From Foo" << "\n"; return bar(); } int

C标准就是这样。但是我不确定C++标准是怎么说的。
#include <iostream>

void bar() {
    std::cout << "From Bar" << "\n";
}

void foo() {
    std::cout << "From Foo" << "\n";
    
    return bar();
}

int main()
{
    foo();
    
    return 0;
}
该程序编译和工作正常。我喜欢回归酒吧的风格;取而代之的是酒吧;返回

这在C++11中合法吗


下面的答案提到最近的草案是合法的。

< P>是的,这是C++中允许的。标准中引用了最新草案:

[短期回报]

。。。具有void类型操作数的返回语句只能在返回类型为cv void….的函数中使用


只是一个声明栏;和回报;之后就足够了。顺便说一句,我不会称之为递归。该草案适用于C++11、C++20或未来吗?@jeffbRTC当前草案可能适用于未来。您可以检查旧的草稿,以查看规则是否随时间而改变。在任何地方都可以找到旧的草稿。@ JeffRTCC在所有批准的C++标准中都存在类似的声明,尽管措辞有细微的变化。例如,C++98,第6.3.3节[stmt.return],第3段。表达式类型为“cv void”的返回语句只能在返回类型为cv void的函数中使用;在函数返回其调用方之前对表达式求值。