Why isn't opMul allowed in a const expression
    Steven Schveighoffer 
    schveiguy at yahoo.com
       
    Tue Nov 20 06:59:56 PST 2007
    
    
  
For example:
struct X
{
  int value;
  X opMul(int y)
  {
    return X(y * value);
  }
}
void main()
{
  const X myX = X(4); // OK
  const X myX2 = X(4 * myX.value); // OK
  const X myX3 = myX * 4; // Error
}
On dmd 1.023 I get:
Error: non-constant expression ((X(4)).opMul)(4)
On dmd 2.006, after adding a const qualifier to opMul, I get:
Error: non-constant expression cast(const X)((X(4)).opMul)(4)
This is somewhat discouraging, as I cannot use my nifty operator overloads 
to generate constant value type structs.
Is this a bug?
-Steve 
    
    
More information about the Digitalmars-d
mailing list