Consider the following snippet:
void Foo() { // ... } void Bar() { return Foo(); }
What is a legitimate reason to use the above in C++
The reason is returning memory like math.h always returns. math.h has no void and no empty arguments. There are many practical situations where you need memory.