Problems with PR 21210
Gabriel Dos Reis
gdr@integrable-solutions.net
Wed Jun 1 18:55:00 GMT 2005
Mark Mitchell <mark@codesourcery.com> writes:
[...]
| > | Jason's approach is better; treat it as a built-in, but make
| > | conversions to it worse than ordinary floating-point types. I think
| > | that's somewhat odd, but much less so than making "fcomplex()" result
| > | in anything other than complex zero.
| > Once again, you're mischaracterizing what I said. From what I said
| > is
| > fcomplex() would be value-intialization, and since it would be
| > treated as an array of two elements, fcomplex() boils down to
| > value-initialization of its components, and in this case
| > zero-initialization of the components. Henc fcomplex() is zero. QED.
|
| You can't initialize an array at present in this way, e.g.:
struct S {
double data[2];
S() : data() // #1
{ }
};
At line #1, we have value-initialization. Are you disagreeing with that?
| typedef int IA[2];
| void f() {
| IA(); // Invalid
yes, but consider that S() -- with above definition of S -- triggers
value initialization.
| }
|
| I think that what you're really doing is reinventing Nathan Myers'
| idea, but making _Complex a separate type from std::complex. You're
| saying that it's like an aggregate, not a scalar, but has overloaded
| operators (like "+"), that it permits explicit conversions from
| integers, but not implicit ones (as if it had an "explicit"
| constructor),
as if written as
doubel ary[2] = { x };
| and that it can be constructed with "fcomplex()" (as if
| it had a default constructor), but that this is not
| zero-initialization.
I did specfically said "value-initialization". Are you claiming that
value-initialization does not exist for aggregates?
It would help a lot that people do actually read what is written
before characteriing them. In this discussion, I had to point out
the micharacterizations nearly every mail :-(
| I just wanted to fix a PR that affected 4.0.
Me too, for the record...
-- Gaby
More information about the Libstdc++
mailing list