overloading a function taking a void[][]
Timon Gehr
timon.gehr at gmx.ch
Wed Aug 8 12:55:21 PDT 2012
On 08/08/2012 09:11 PM, Johannes Pfau wrote:
> Am Wed, 08 Aug 2012 18:53:05 +0200
> schrieb Timon Gehr<timon.gehr at gmx.ch>:
>
>> Try this:
>>
>> template digest(Hash) if(isDigest!Hash){
>> digestType!Hash digest(Range)(Range data)
>> if(!is(Range:void[][])&& isInputRange!Range&&
>> __traits(compiles,digest!Hash(ElementType!(Range).init))){
>> //implementation detail
>> }
>> digestType!Hash digest()(scope const(void[])[] data...){ //
>> templated as a workaround
>> //implementation detail
>> }
>> // ... (maybe more overloads)
>> }
>
> Clever, but doesn't seem to work. I can't create an instance of it, even
> when explicitly specifying the types.
>
Well, I have done similar things in the past. The general concept should
work.
> BTW: This is a working version, but it does cause template bloat:
> http://dpaste.dzfl.pl/d42a58aa
>
Maybe this helps:
http://dpaste.dzfl.pl/ed2e8e5d
More information about the Digitalmars-d-learn
mailing list