1 // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
9 int foo(int S::* ps
, S
*s
)
11 return (s
->*ps
)(1); // expected-error {{called object type 'int' is not a function or function pointer}}
17 int anon_bitfield
: 1;
21 int S2::*pf
= &S2::bitfield
; // expected-error {{address of bit-field requested}}
22 int S2::*anon_pf
= &S2::anon_bitfield
; // expected-error {{address of bit-field requested}}
28 void f3(S3
* p
, void (S3::*m
)()) {
29 p
->*m
; // expected-error {{reference to non-static member function must be called}}
30 (void)(p
->*m
); // expected-error {{reference to non-static member function must be called}}
31 (void)(void*)(p
->*m
); // expected-error {{reference to non-static member function must be called}} expected-error {{cannot cast from type 'void' to pointer type 'void *'}}
32 (void)reinterpret_cast<void*>(p
->*m
); // expected-error {{reference to non-static member function must be called}} expected-error {{reinterpret_cast from 'void' to 'void *' is not allowed}}
33 if (p
->*m
) {} // expected-error {{reference to non-static member function must be called}} expected-error {{value of type 'void' is not contextually convertible to 'bool'}}
34 if (!(p
->*m
)) {} // expected-error {{reference to non-static member function must be called}} expected-error {{invalid argument type 'void' to unary expression}}
35 if (p
->m
) {}; // expected-error {{reference to non-static member function must be called}} expected-error {{value of type 'void' is not contextually convertible to 'bool'}}
36 if (!p
->m
) {}; // expected-error {{reference to non-static member function must be called}} expected-error {{invalid argument type 'void' to unary expression}}