This patch adds modelling of implicit conversions to the `experimental-cppcoreguidelines-avoid-adjacent-arguments-of-the-same-type` check. This will allow also diagnosing functions such as `void f(int i, double d);` to have a mix-up chance, i.e. `f(some_double, some_int)`. User-defined conversions are also supported.
Unfortunately, there isn't a sensible way (at least I found none) to ask `Sema` at //"frontend time"// whether or not the two parameters could be implicitly converted between one another, as we do not have the `Sema` instance anymore. Hence there is extra work done here to model the conversions. I believe the check's code under-approximates and thus, there might be cases of false negatives (such as the more arcane implicit conversions like "function pointer to nothrow" -> "function pointer to maybe throw"), but a good grasp on the usual potential issues (such as `void g(std::string, const char *);`) is given.