1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
// PR c++/52875 // { dg-do compile { target c++11 } } struct A { friend void swap(A&,A&) {} }; class B { A a; template <class T> friend auto swap(T& x, T& y) -> decltype(swap(x.a,y.a)) { swap(x.a,y.a); } }; int main() { B x, y; swap(x, y); }