I'm aware that "ordinary" recursive definitions are allowed in C++, the most typical example being a factorial: fact(x)=x*fact(x-1) with the definition 0!=1.
What about two-fold recursive definitions? (No longer talking factorials, just generally now.) The program below will not compile. It suffers a kind of chicken-and-egg problem that other languages don't suffer from.
To make the above point, the following QB64 program, identical in essence to the one above, compiles and works perfectly. Funny enough, QB64 sits on top of the gcc compiler, the same one I'm using for the C++ attempt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
PRINT foo(6)
END
FUNCTION foo (arg)
PRINT "foo"; arg
IF arg = 0 THEN temp = 0 ELSE temp = baz(arg - 1)
foo = temp
END FUNCTION
FUNCTION baz (arg)
PRINT "baz"; arg
IF arg = 0 THEN temp = 0 ELSE temp = foo(arg - 1)
baz = temp
END FUNCTION