Compile-time evaluation lost in alias this

Tommi tommitissari at hotmail.com
Wed May 30 01:58:46 PDT 2012


struct ValueImpl
{
     static immutable(int) getValue()
     {
         return 42;
     }
}

struct ValueUser
{
     ValueImpl m_valueImpl;
     alias m_valueImpl this;
}

void main(string[] args)
{
     static assert(ValueImpl.getValue() == 42);
     static assert(ValueUser.getValue() == 42); // (1)
}

(1) Doesn't compile. Error: variable m_valueImpl cannot be read 
at compile time

To use alias this for composition, it would be nice if the 
compile-time evaluable members of the aliased object would remain 
compile-time evaluable even when used through an alias. Is the 
current behavior defined by the language or is it due to the 
compiler (DMD) implementation?


More information about the Digitalmars-d mailing list