The ternary operator ?: is an operator, not a control structure like if()else. While they may be functionally equivalent in select cases, that doesn't mean they are universally interchangeable.
"return true" is a statement, not an expression. Expressions can be used as the return value (so long as they resolve to the expected type being returned), but a return statement cannot be used as an expression within an operation because it performs a specific action, which is to exit the current body of code, passing control back to the calling body of code.
that action can be performed within the body of a control structure like if()else, but it cannot be performed in the middle of an operation.
It's not stupid at all, and is routine in C. My version is sometimes used to stop the compiler from complaining about a narrowing conversion (of int to bool).