Skip to main content
edited tags
Link
Daniel Daranas
  • 22.7k
  • 10
  • 66
  • 122
Source Link
Johannes
  • 3.1k
  • 5
  • 38
  • 53

C++ friend function hidden by class function?

Minimal example:

class A { friend void swap(A& first, A& second) {} void swap(A& other) {} void call_swap(A& other) { swap(*this, other); } }; int main() { return 0; } 

g++ 4.7 says:

friend.cpp: In member function ‘void A::call_swap(A&)’: friend.cpp:7:20: error: no matching function for call to ‘A::swap(A&, A&)’ friend.cpp:7:20: note: candidate is: friend.cpp:4:7: note: void A::swap(A&) friend.cpp:4:7: note: candidate expects 1 argument, 2 provided 

Outcomment line 4:

// void swap(A& other) {} 

...and it works fine. Why, and how to fix this, if I want to keep both variants of my swap function?