std.functional:partial - disambiguating templated functions
    John Colvin via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Sun Oct  4 09:37:32 PDT 2015
    
    
  
On Sunday, 4 October 2015 at 15:45:55 UTC, Laeeth Isharc wrote:
> How do I persuade partial to tie itself to the appropriate 
> overload?
> I have:
>
> alias 
> bars=partial!(slurpBars!BarType,filename,startDate,endDate);
>
> where there are two overloads of slurpBars:
>
> SomeBar[] slurpBars(SomeBar)(string filename,string 
> datasetName, typeof(SomeBar.date) startDate, 
> typeof(SomeBar.date) endDate)
> SomeBar[] slurpBars(SomeBar)(hid_t filehandle,string 
> datasetName, typeof(SomeBar.date) startDate, 
> typeof(SomeBar.date) endDate)
>
> And I receive the following error:
>  Error: template kprop.marketdata.retrievebars.slurpBars 
> matches more than one template declaration:
>
> Thanks.
>
>
> Laeeth.
As far as I can see std.functional.partial only does one argument 
at a time.
bars=partial!(partial!(partial!(slurpBars!BarType, filename), 
startDate), endDate);
or maybe, I'm not sure, but maybe you can do:
bars=partial!(slurpBars!BarType, AliasSeq!(filename, startDate, 
endDate));
If you find you really need to manually mess with overloads, use 
http://dlang.org/traits.html#getOverloads. You may have to wrap 
it in AliasSeq in some situations due to grammar/parser 
constraints.
    
    
More information about the Digitalmars-d-learn
mailing list