2 // Origin: Wolfgang Bangerth <bangerth at ticam dot utexas dot edu>
3 // and Rene Fonseca <fonseca at mip dot sdu dot dk>
4 // PR c++/8271: Check cv-qualifiers while unifying pointer to member
8 void mMethod() throw() {}
9 void cMethod() const throw() {}
10 void vMethod() volatile throw() {}
11 void cvMethod() const volatile throw() {}
15 void mFunction(void (CLASS::* method)()) {} // { dg-message "note" }
18 void cFunction(void (CLASS::* method)() const) {} // { dg-message "note" }
21 void vFunction(void (CLASS::* method)() volatile) {} // { dg-message "note" }
24 void cvFunction(void (CLASS::* method)() const volatile) {} // { dg-message "note" }
27 mFunction(&MyClass::mMethod);
28 mFunction(&MyClass::cMethod); // { dg-error "no matching function" }
29 // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
30 mFunction(&MyClass::vMethod); // { dg-error "no matching function" }
31 // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
32 mFunction(&MyClass::cvMethod); // { dg-error "no matching function" }
33 // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
35 cFunction(&MyClass::mMethod); // { dg-error "no matching function" }
36 // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
37 cFunction(&MyClass::cMethod);
38 cFunction(&MyClass::vMethod); // { dg-error "no matching function" }
39 // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
40 cFunction(&MyClass::cvMethod); // { dg-error "no matching function" }
41 // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
43 vFunction(&MyClass::mMethod); // { dg-error "no matching function" }
44 // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
45 vFunction(&MyClass::cMethod); // { dg-error "no matching function" }
46 // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
47 vFunction(&MyClass::vMethod);
48 vFunction(&MyClass::cvMethod); // { dg-error "no matching function" }
49 // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
51 cvFunction(&MyClass::mMethod); // { dg-error "no matching function" }
52 // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
53 cvFunction(&MyClass::cMethod); // { dg-error "no matching function" }
54 // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
55 cvFunction(&MyClass::vMethod); // { dg-error "no matching function" }
56 // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
57 cvFunction(&MyClass::cvMethod);