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.