user-defined-conversions.cpp revision cb9b977d5989efc1e5bc7684091912ca2915aacb
1// RUN: clang -fsyntax-only -verify %s 2struct X { 3 operator bool(); 4}; 5 6int& f(bool); 7float& f(int); 8 9void f_test(X x) { 10 int& i1 = f(x); 11} 12 13struct Y { 14 operator short(); 15 operator float(); 16}; 17 18void g(int); 19 20void g_test(Y y) { 21 g(y); 22 short s; 23 s = y; 24} 25 26struct A { }; 27struct B : A { }; 28 29struct C { 30 operator B&(); 31}; 32 33// Test reference binding via an lvalue conversion function. 34void h(volatile A&); 35void h_test(C c) { 36 h(c); 37} 38