1 // PR c++/91889 - follow-up fix for DR 2352.
2 // { dg-do compile { target c++11 } }
3
4 int i;
5
6 void f1 (int *);
7 void f1 (const int *const &);
8
9 void f2 (int *);
10 void f2 (const int *&);
11
12 void f3 (const int *);
13 void f3 (int *const &);
14
15 void f4 (int *&);
16 void f4 (int *const &);
17
18 void f5 (const int *&);
19 void f5 (int *const &);
20
21 void f6 (int *const &);
22 void f6 (const int *const &);
23
24 void f7 (int **const);
25 void f7 (const int *const *const &);
26
27 void f8 (const int *const *);
28 void f8 (const int *const *const &);
29
30 void f9 (int *const *);
31 void f9 (const int *const *const &);
32
33 void
g(int * p,const int * pc,const int ** q)34 g (int *p, const int *pc, const int **q)
35 {
36 f1 (p);
37 f1 (pc);
38 f2 (p);
39 f2 (pc);
40 f3 (p);
41 f3 (pc);
42 f4 (p);
43 f5 (p);
44 f5 (pc);
45 f6 (p);
46 f6 (pc);
47 f7 (q);
48 /* [over.ics.rank]
49
50 --S1 and S2 differ only in their qualification conversion and yield
51 similar types T1 and T2 (_conv.qual_), respectively, and the cv-
52 qualification signature of type T1 is a proper subset of the cv-
53 qualification signature of type T2 */
54 f8 (q);
55 f9 (q);
56 }
57