ambiguous call to overloaded function - int and int&

c++, overloading, reference

Solution

If you can cast, there is, of course a way to disambiguate the call:

g(const_cast<int const&>(a));

If you insist to call the reference version, the resolution is a bit more tricky:

static_cast<void(*)(int&)>(g)(a);

Problem

``` void g(int& a) { std::cout<<"int&\n"; } void g(int a) { std::cout<<"int\n"; } int main() { int a = 2; g(a); //won't compile (at least under MSVC 2012) std::cin.ignore(); } ``` Is there a way to avoid ambiguous call error here ? something like `g( static_cast<int&>(a) );`

Original source