Home | History | Annotate | Download | only in temp.deduct.conv
      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