Can someone explain why opCast is so limited?
    Steven Schveighoffer 
    schveiguy at yahoo.com
       
    Thu Sep  6 07:47:41 PDT 2007
    
    
  
Question #1: I know that because you cannot overload functions based on the 
return type, they are limited.  But casting is more of a function with type 
as the parameter.  i.e.:
cast(Type)value;
I look at Type and value as the parameters to the cast.  Why doesn't opCast 
behave like:
int opCast(int)
{
  return myIntRepresentation;
}
float opCast(float)
{
  return myFloatRepresentation;
}
Question #2:  Is there a way to cast a basic type to a struct/class?  I can 
see uses for this, such as if you wanted to change an alias to a struct. 
e.g.:
before:
alias long myType;
myType convertToMyType(long x)
{
  return cast(myType)x;
}
after, I want to have methods on myType, etc:
struct myType
{
  long _value;
}
Now convertToMyType doesn't compile, and I have to go through and change all 
the casts that I previously used.   Is there a way to make it work with the 
current implementation, or does something need to be added?  What I'm 
thinking is something like a global function:
myType opCast(myType, long value)
{
  return myType(value);
}
Until these things work, there isn't a good way to make structs truly value 
types.
-Steve 
    
    
More information about the Digitalmars-d-learn
mailing list