This is the mail archive of the
mailing list for the GCC project.
Re: Problems with PR 21210
- From: Mark Mitchell <mark at codesourcery dot com>
- To: Gabriel Dos Reis <gdr at integrable-solutions dot net>
- Cc: libstdc++ at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org, jason at redhat dot com, nathan at codesourcery dot com, ncm at codesourcery dot com
- Date: Tue, 31 May 2005 22:47:17 -0700
- Subject: Re: Problems with PR 21210
- References: <200505292006.j4TK6ktK008048@sethra.codesourcery.com> <email@example.com>
Gabriel Dos Reis wrote:
Mark Mitchell <firstname.lastname@example.org> writes:
| PR 21210 is a complaint that G++ 4.0 has stopped allowing conversions
| from integers to "__complex__ float". This is a perfectly reasonable
My reading of the PR is a bit different, especially comment #1
typedef float __complex__ fcomplex;
fcomplex cplx = fcomplex();
which effectively produces the error
21210.C:2: error: invalid cast from type 'int' to type 'float __complex__'
which is at least disturbing, because there is not cast and no int
here. Rather, there is a default value fcomplex() being requested and
copied into another fcomplex. There is no conversion requested. That
appears to me to be entirely isolated from the std::complex<> thingy.
Why is that observation flawed?
Because the "T()" syntax means zero-initialization for builtin types.
You will get the same error message if you write "fcomplex(3)".