According to the C++ Standard, static and non-static member functions with the same parameter types cannot be overloaded. The following code should fail to compile.
struct X {
void f() const;
static void f();
};
It fails in clang 17, but succeeds in clang 18. And I find it is related to the declaration order. If swap the declaration order of the two functions
struct X {
static void f();
void f() const;
};
It fails as expected, please see Compiler Explorer.