#include <iostream>

void foo(int x)  { std::cout << "foo(int)"   << std::endl; }
void foo(int& x) { std::cout << "foo(int &)" << std::endl; }

int main()
{
    int i = 42;
    static_cast<void (&)(int&)>(foo)(i);
}