1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 // expected-no-diagnostics 3 struct AnyPtr { 4 template<typename T> 5 operator T*() const; 6 }; 7 8 // If A is a cv-qualified type, the top level cv-qualifiers of A's type 9 // are ignored for type deduction. 10 void test_cvquals(AnyPtr ap) { 11 int* const ip = ap; 12 const float * const volatile fp = ap; 13 } 14 15 // If A is a reference type, the type referred to by A is used for 16 // type deduction. 17 void test_ref_arg(AnyPtr ap) { 18 const int* const &ip = ap; 19 double * const &dp = ap; 20 } 21 22 struct AnyRef { 23 template<typename T> 24 operator T&() const; 25 }; 26 27 void test_ref_param(AnyRef ar) { 28 int &ir = ar; 29 const float &fr = ar; 30 int i = ar; 31 } 32