As discussed in my previous patch (D142354) the analyzer can understand std::variant and std::any through regular inlining. However warnings coming from these classes were suppressed by NoStateChangeFuncVisitor, more specificly by an instance of NoStoreFuncVisitor. The reason behind that is that we suppress bug reports when a system header function was supposed to initialize its parameter but failed to (as you can read about it in a comment block visible in this patch).
Now the problem is that these bug report were suppressed, but they had nothing to do with uninitialized values. In a follow up patch I intend to fix that and see how this suppression logic works as it was meant to be, but my initial testing shows that they no longer falsely suppress reports like this:
std::variant<int, std::string> v = 0; int i = std::get<int>(v); 10/i; // FIXME: This should warn for division by zero!
In this patch I only separated these two functionalities because I don't think this suppression should be implemented in a NoStateChangeVisitor but in it's own.
We also lost this, unfortunately, and this is kind of the point where we check whether the std function has anything to do with the uninitialized value (its been passed as parameter or something).
Please investigate whether losing this has any effect (and it very likely does).