1// RUN: %clang_cc1 -fsyntax-only -verify %s 2// expected-no-diagnostics 3struct 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. 10void 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. 17void test_ref_arg(AnyPtr ap) { 18 const int* const &ip = ap; 19 double * const &dp = ap; 20} 21 22struct AnyRef { 23 template<typename T> 24 operator T&() const; 25}; 26 27void test_ref_param(AnyRef ar) { 28 int &ir = ar; 29 const float &fr = ar; 30 int i = ar; 31} 32