On Wednesday, April 18, 2012 19:43:07 Jonathan M Davis wrote:
> If you declare another overload of opCast:
> 
> Object opCast(T)() const
> if(is(Unqual!T == Object))
> {
> return this;
> }
> 
> then it should work.

Actually, this would be better:

 T opCast(T)()
 if(isImplicitlyConvertible!(typeof(this), T))
 {
 return this;
 }

 const(T) opCast(T)() const
 if(isImplicitlyConvertible!(typeof(this), const T))
 {
 return this;
 }

The other only works with Object and won't work with any other base classes if 
there are any. It also probably doesn't deal with const very well, and I'm 
surprised that it compiled. It seems like bug, since otherwise, it strips away 
const, which isn't good.

In either case, I believe that this version works and is more flexible. 
Ideally, it wouldn't be necessary though.

- Jonathan M Davis

Reply via email to