Can't cast from void*

Steven Schveighoffer schveiguy at yahoo.com
Tue Feb 6 15:57:04 UTC 2018


On 2/6/18 3:29 AM, Kagamin wrote:
> On Monday, 5 February 2018 at 15:33:02 UTC, Steven Schveighoffer wrote:
>> Is there a more pragmatic use case why this should be possible?
> 
> Maybe for least surprise. The error message almost convinced me that 
> such cast is impossible, only because of my memory that this cast used 
> to be possible kept me trying. Is 5 not good because it's not big enough?

Honestly, I don't know why it's not working. But maybe there is a reason 
(i.e. it's not a bug and was done on purpose).

All I meant is that, if you have a more practical correct reason for 
casting an integer literal to an interface, then we can show that it's 
worth worrying about.

By illustration of what I'm talking about, D complains about this:

int * foo()
{
    int x;
    return &x;
}

But not this:

int * bar()
{
    int x;
    int *p = &x;
    return p;
}

Complaining about not being able to cast 5 directly to an interface, 
when you can do it in 2 statements, may be like complaining that bar 
compiles, why not foo?

-Steve


More information about the Digitalmars-d-learn mailing list