1 // RUN: %clang_cc1 -fsyntax-only -verify %s
3 template<typename T
> void take(T
);
5 void func(float Real
, _Complex
float Complex
) {
6 Real
+= Complex
; // expected-error {{assigning to 'float' from incompatible type '_Complex float'}}
7 Real
+= (float)Complex
;
9 Real
= Complex
; // expected-error {{implicit conversion from '_Complex float' to 'float' is not permitted in C++}}
10 Real
= (float)Complex
;
12 take
<float>(Complex
); // expected-error {{implicit conversion from '_Complex float' to 'float' is not permitted in C++}}
13 take
<double>(1.0i
); // expected-error {{implicit conversion from '_Complex double' to 'double' is not permitted in C++}}
14 take
<_Complex
float>(Complex
);
16 // Conversion to bool doesn't actually discard the imaginary part.