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) );`