// PR c++/37208: SFINAE and deleted functions. // { dg-options "-std=c++0x" } // { dg-do compile } template struct A { }; template int& int_if_addable(A*); template float& int_if_addable(...); struct X { }; struct Y { }; Y operator+(Y, Y); struct Z { }; Z operator+(Z, Z) = delete; void f() { float& x = int_if_addable(0); int& y = int_if_addable(0); float& z = int_if_addable(0); }