Summary: for a struct A, new A should work if A a; does
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD

--- Comment #0 from Fawzi Mohamed <> 2012-10-04 14:59:20 PDT ---
module t2;

struct A{
    this(int i){}

void f(){
    auto a=new A;

fails to compile with dmd 2.060:

t2.d(8): Error: constructor t2.A.this (int i) is not callable using argument
types ()
t2.d(8): Error: expected 1 function arguments, not 0

This creates strange problems (for example Variant not working), as a
workaround one can give a default argument to the constructor, and then the
error is suppressed.

As a struct can be default initialized when on the stack (with 'A a;'), it is
only logical to expect to be able to allocate it on the heap with 'new A;'.
This is related with the discussions in issue3680 and issue3438 , but
independently from the larger changes/discussion in there, I think this simple
operation should work, only when @disable this(){} there should be an error
with new A

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

Reply via email to