[Issue 9982] ICE on CTFE for pointer dereference
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Tue Apr 23 07:03:09 PDT 2013
    
    
  
http://d.puremagic.com/issues/show_bug.cgi?id=9982
Igor Stepanov <wazar.leollone at yahoo.com> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |wazar.leollone at yahoo.com
--- Comment #1 from Igor Stepanov <wazar.leollone at yahoo.com> 2013-04-23 07:03:08 PDT ---
I've tried to simplify this bug case.
My resolution: error in operation of taking address of struct member and
dereference it.
We must ask Don about this.
struct Foo(T)
{
    T a;
    this(T arg)
    {
      T* p = &a;
      *p = arg;
    }
    this(T arg, int)
    {
      T* p = &a;
      setRef(*p, arg);
    }    
    static void setRef(ref T p, T v)
    {
        p = v;
    }
}
auto ct1 = Foo!int(99); //compiled, but doesn't set this.a to 99
auto ct2 = Foo!int(99, 0); //compiled, but doesn't set this.a to 99
//try with struct
struct Bar
{
    int b;
}
auto ct1_2 = Foo!Bar(Bar(99)); //Error
auto ct2_2 = Foo!Bar(Bar(99), 0); //ICE
void main()
{
    assert(ct1.a != 99); 
    assert(ct2.a != 99); 
}
-- 
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