www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Universal Construction Syntax for Pointers?

reply "Meta" <jared771 gmail.com> writes:
I thought this was possible, but DMD 2.065 doesn't allow it, 
saying "no constructor for int":

int* p = new int(3);

Is something like this planned for the future? I know we can 
already do:

int n = int(3);
Jun 13 2014
parent reply =?UTF-8?B?QWxpIMOHZWhyZWxp?= <acehreli yahoo.com> writes:
On 06/13/2014 10:29 PM, Meta wrote:
 I thought this was possible, but DMD 2.065 doesn't allow it, saying "no
 constructor for int":

 int* p = new int(3);

 Is something like this planned for the future? I know we can already do:

 int n = int(3);
Those both compile with 2.066 Ali
Jun 13 2014
next sibling parent "Meta" <jared771 gmail.com> writes:
On Saturday, 14 June 2014 at 06:39:56 UTC, Ali Çehreli wrote:
 On 06/13/2014 10:29 PM, Meta wrote:
 I thought this was possible, but DMD 2.065 doesn't allow it, 
 saying "no
 constructor for int":

 int* p = new int(3);

 Is something like this planned for the future? I know we can 
 already do:

 int n = int(3);
Those both compile with 2.066 Ali
Right, thanks. It's difficult to keep track of what's already released and what's in Git HEAD.
Jun 13 2014
prev sibling parent reply Philippe Sigaud via Digitalmars-d-learn writes:
Would

auto i = (int*)(3);

make sense?

Does it work?
Jun 14 2014
parent reply "Marc =?UTF-8?B?U2Now7x0eiI=?= <schuetzm gmx.net> writes:
On Saturday, 14 June 2014 at 08:09:12 UTC, Philippe Sigaud via 
Digitalmars-d-learn wrote:
 Would

 auto i = (int*)(3);

 make sense?

 Does it work?
No: Error: C style cast illegal, use cast(int*)3 And I don't think it should, because the heap allocation that you're probably expecting should be explicit IMO. For me it's also unintuitive, because I would read it as constructing a pointer that points to the address 3.
Jun 14 2014
parent Philippe Sigaud via Digitalmars-d-learn writes:
 And I don't think it should, because the heap allocation that you're
 probably expecting should be explicit IMO. For me it's also unintuitive,
 because I would read it as constructing a pointer that points to the address
 3.
I agree. I'm trying to get a feel on the limits of this new 'type(value)' syntax.
Jun 14 2014