Consider the following functions:

```
void f(int) {...}
void f(const int&) {...}

```

They are different and their definitions compile together successfully. But is there a way to call any of them when they both participate in overload resolution?
And if there is no way, why are they not considered the same function like these two:

```
void g(int) {...}
void g(const int) {...} // error: redefinition of 'void g(int)'

```