auto ref
    Steven Schveighoffer 
    schveiguy at yahoo.com
       
    Thu Dec 17 11:28:24 PST 2009
    
    
  
On Thu, 17 Dec 2009 13:03:51 -0500, Bill Baxter <wbaxter at gmail.com> wrote:
> This 'auto ref' stuff and the multi-flavor 'vconst' functions are
> basically templates with a known list of instantiations (ref /no-ref,
> and const/immutable/plain)
> In theory there's no reason you couldn't allow templates to also
> create virtual functions, if you limit yourself to listing the
> possible instantiations up front.
Technically, the vconst functions provide one other feature -- implicit  
casting back to the correct type.  You can't support that with templates,  
and still have the compiler ensure const is obeyed during the function all  
with a function signature.  Also, there is only ever a single vconst  
function, not 3^n overloaded ones.
But I agree with allowing a restricted template to be able to be virtual.   
One recent discussion that applies here is templatized operator  
overloading -- wouldn't it be nice if:
opBinary(op : "+")(T rhs) {...}
could be a virtual function?  That gives us immediate support for virtual  
functions without the hoaky:
opBinary(op : "+")(T rhs) {return opAdd(rhs);}
mixin boilerplate.
(BTW, this was Denis Koroshin's idea, not mine)
-Steve
    
    
More information about the Digitalmars-d
mailing list