std.functional:partial - disambiguating templated functions
Laeeth Isharc via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Oct 4 10:11:18 PDT 2015
On Sunday, 4 October 2015 at 16:37:34 UTC, John Colvin wrote:
> 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.
Thanks, John. I will give that a try.
Laeeth.
More information about the Digitalmars-d-learn
mailing list