Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
      2 int* quals1(int const * p);
      3 int* quals2(int const * const * pp);
      4 int* quals3(int const * * const * ppp); // expected-note{{candidate function}}
      5 
      6 void test_quals(int * p, int * * pp, int * * * ppp) {
      7   int const * const * pp2 = pp;
      8   quals1(p);
      9   quals2(pp);
     10   quals3(ppp); // expected-error {{no matching}}
     11 }
     12 
     13 struct A {};
     14 void mquals1(int const A::*p);
     15 void mquals2(int const A::* const A::*pp);
     16 void mquals3(int const A::* A::* const A::*ppp);  // expected-note{{candidate function}}
     17 
     18 void test_mquals(int A::*p, int A::* A::*pp, int A::* A::* A::*ppp) {
     19   int const A::* const A::* pp2 = pp;
     20   mquals1(p);
     21   mquals2(pp);
     22   mquals3(ppp); // expected-error {{no matching}}
     23 }
     24 
     25 void aquals1(int const (*p)[1]);
     26 void aquals2(int * const (*pp)[1]);
     27 void aquals2a(int const * (*pp2)[1]); // expected-note{{candidate function}}
     28 
     29 void test_aquals(int (*p)[1], int * (*pp)[1], int * (*pp2)[1]) {
     30   int const (*p2)[1] = p;
     31   aquals1(p);
     32   aquals2(pp);
     33   aquals2a(pp2); // expected-error {{no matching}}
     34 }
     35