|
|
|
|
|
by kazinator
703 days ago
|
|
In C, it is not like that. From the 2023 draft: 6.8.7.5 The return statement Constraints 1 A return statement with an expression shall not appear in a function whose return type is void. It's a constraint violation. It doesn't matter what the type of the expression is. It looks as if C++ made a small improvement here. Yes, the bottom type is at the bottom of the type derivation hierarchy. That's why the word bottom is there; that's what it's at the bottom of. It's also why it can't have any instances. Since every other type is a supertype, then if the bottom type contained some value V, that value would be imposed into every other type! V would be a valid String, Widget, Integer, Stream, Array ... what have you. |
|
But void is not the base of anything in C and C++.
You could argue that void is in some category of types where it is at the bottom; but no other types are in that category.
There is another problem: a bottom type should be the subtype of all types in that category. That includes being its own subtype. There we have a problem: C and C++ void is not a subtype of void in any sense.