What    |Removed                     |Added
                 CC|                            |

--- Comment #2 from 2010-09-11 07:00:37 PDT ---
(In reply to comment #1)
> Also, since when are structs allowed to be allocated on the heap? TDPL
> explicitly states that structs have scoped lifetime.

I double TDPL says this. And if it says so, then it's wrong. TDPL is not a
religious book.

> You cannot override this. See page 244 in TDPL.

The reason given at page 244 is that all type needs a statically defined init.

On the other hand the need to allocate a struct on the heap with no arguments
is real, and the current workarounds look bad for a nice language as D2. This
small program shows that you can create a S2 on the stack:

struct S1 {}
struct S2 {
    this(int) {}
void main() {
    S1 s1a;
    auto s1b = new S1;
    S2 s2a; // OK
    auto s2b = new S2; // ERR

So I think "new S2;" may just create the same struct that "S2 s2a;" creates,
but allocate it on the heap instead of the stack. I think this is a solution.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to