1 // RUN: %clang_cc1 -fsyntax-only -verify %s
8 bool Test(const int& foo
);
10 const Foo f
= { 0 }; // It compiles without the 'const'.
30 operator B
&(); // expected-warning{{conversion function converting 'PR6066::A' to its base class 'PR6066::B' will never be used}}
33 void f(B
&); // no rvalues accepted
37 f(A()); // calls f(B*)
44 unsigned bitX
: 4; // expected-note 3 {{bit-field is declared here}}
45 unsigned bitY
: 4; // expected-note {{bit-field is declared here}}
52 unsigned &t0
= a
->bitX
; // expected-error {{non-const reference cannot bind to bit-field 'bitX'}}
53 unsigned &t1
= (unsigned&) a
->bitX
; // expected-error {{C-style cast from bit-field lvalue to reference type 'unsigned int &'}}
54 unsigned &t2
= const_cast<unsigned&>(a
->bitX
); // expected-error {{const_cast from bit-field lvalue to reference type 'unsigned int &'}}
55 unsigned &t3
= (a
->foo(), a
->bitX
); // expected-error {{non-const reference cannot bind to bit-field 'bitX'}}
56 unsigned &t4
= (a
->var
? a
->bitX
: a
->bitY
); // expected-error {{non-const reference cannot bind to bit-field}}
57 unsigned &t5
= (a
->var
? a
->bitX
: a
->bitX
); // expected-error {{non-const reference cannot bind to bit-field}}
58 unsigned &t6
= (a
->var
? a
->bitX
: a
->var
); // expected-error {{non-const reference cannot bind to bit-field}}
59 unsigned &t7
= (a
->var
? a
->var
: a
->bitY
); // expected-error {{non-const reference cannot bind to bit-field}}
60 unsigned &t8
= (a
->bitX
= 3); // expected-error {{non-const reference cannot bind to bit-field 'bitX'}}
61 unsigned &t9
= (a
->bitY
+= 3); // expected-error {{non-const reference cannot bind to bit-field 'bitY'}}
65 namespace explicit_ctor
{
67 struct B
{ // expected-note 2{{candidate}}
68 explicit B(const A
&); // expected-note {{explicit constructor is not a candidate}}
71 const B
&b(a
); // expected-error {{no viable conversion}}