Can we overload a function based on only whether a parameter is a value or a reference?

Posted by skydoor on Stack Overflow See other posts from Stack Overflow or by skydoor
Published on 2010-03-16T20:59:22Z Indexed on 2010/03/16 21:01 UTC
Read the original article Hit count: 85

Filed under:

I got the answer NO! Because passing by value and passing by reference looks identical to the caller.

However, the code below compiles right

class A {

public:
void f(int i) {}    

void f(int& i) {}
};

But when I try to use it, there is compile error.

int main () {

   A a;
   int i = 9;
   int& j = i;
   a.f(1);
   a.f(i);
   a.f(j);
  return 0;
}

Why does not the compiler disable it even without knowing it is going to be used?

© Stack Overflow or respective owner

Related posts about c++