Hacker News new | ask | show | jobs
by im3w1l 2591 days ago
> he claimed it to be a halting problem and that the compiler couldn't determine that all paths didnt return a value.

Theoretically we can't determine whether a function will return a value or not. In practice, heuristics get 99% of the way and the last 1% you can make the programmer put in a possibly redundant return statement.

1 comments

There are two different questions: "do all paths lead to returning a value?" and "will the function return a value?"

Answering the second in the general case is equivalent to solving the halting problem. But answering the first question is much simpler. Static analyzers aren't using a heuristic approach to the second question, they're solving a completely different problem.

Don't get me wrong, but if whole classes of errors, can be avoided by not choosing C++, why should I choose to use it?
Because you already know C++ and don't want or can't justify learning another language. That's a very valable reason.