1 // Copyright (C) 2004 Free Software Foundation, Inc.
2 // Contributed by Nathan Sidwell 20 Oct 2004 <nathan@codesourcery.com>
3 
4 // DR 195 was about allowing conversions between function and object
5 // pointers under some circumstances.  The issue got resolved for C++11,
6 // which, in 5.2.10 p8 says that: "Converting a function pointer to an
7 // object pointer type or vice versa is conditionally-supported."
8 
9 // This checks we don't warn anymore with -pedantic.
10 
11 typedef void (*PF)(void);
12 typedef void *PV;
13 typedef int *PO;
14 
foo()15 void foo ()
16 {
17   PF pf;
18   PV pv;
19   PO po;
20 
21   /* the following two will almost definitly be ok with 195.  */
22   pf = reinterpret_cast <PF>(pv);
23   pv = reinterpret_cast <PV>(pf);
24 
25   /* the following two might or might not be ok with 195.  */
26   pf = reinterpret_cast <PF>(po);
27   po = reinterpret_cast <PO>(pf);
28 
29   /* These will never be ok, as they are implicit.  */
30   pv = pf; // { dg-error "invalid conversion" }
31   pf = pv; // { dg-error "invalid conversion" }
32 }
33