[Issue 3990] Deferencing a dynamic array as pointer

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Oct 31 05:37:56 PDT 2011


http://d.puremagic.com/issues/show_bug.cgi?id=3990



--- Comment #5 from bearophile_hugs at eml.cc 2011-10-31 05:36:43 PDT ---
(In reply to comment #3)

> >    assert(*a1 == 5);
> >    alias typeof(a1) T1;
> >    assert(is(typeof(*T1)));
> 
> Dereferencing dynamic or static array without -d option is deprecated.
> I think this is 'accepts-invalid'.

Don agrees:

http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=148054


> 2.
> >    int* p1 = cast(int*)a1;
> >    assert(p1 == a1.ptr);
> 
> Explicit casting is still valid.
> 
>   cast(int*)a1
> 
> means
> 
>   cast(int*)a1.ptr

I don't see the need to accept this cast. There is the ".ptr" so this cast is
not useful in practice. And generally this cast is refused by DMD 2.056 as you
see in the following program, so you are introducing/leaving an useless special
case:


struct Foo {
    int* p;
    size_t n;
}
void main() {
    Foo f;
    auto x = cast(int*)f;
}


So I think cast(int*)a1 should be forbidden.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list