void g(int& a) { std::cout<<"int& "; } void g(int a) { std::cout<<"int "; } 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) );
g( static_cast<int&>(a) );
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);
1.4m articles
1.4m replys
5 comments
57.0k users