STL Algorithms are usually implemented in a tricky for performance reasons which is too complicated for the analyzer. Furthermore inlining them is costly. Instead of inlining we should model their behavior according to the specifications.
This patch is the first step towards STL Algorithm modeling. It models all the find()-like functions in a simple way: the result is either found or not. In the future it can be extended to only return success if container modeling is also extended in a way the it keeps track of trivial insertions and deletions.
STL algorithm modeling, as such, doesn't need to be opt-in.
That said, as i mentioned, i strongly prefer the state split on std::find to be opt-in, because there's usually no obvious indication in the code that the search is expected to fail.
Let's move the checker to cplusplus and add an option to it ("aggressive std::find modeling" or something like that) that'll enable exploration of the failure branch. I prefer it as an option because there definitely is a chance that we'll actually want it on by default (like we did with the move-checker for locals - it's still wonky but it seems to work really well in practice), and if we do that, i'd prefer not to have to rename a checker.