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