simple (I think) eponymous template question ... what is proper idimatic way ?

james.p.leblanc james.p.leblanc at gmail.com
Wed Aug 18 05:33:13 UTC 2021


On Tuesday, 17 August 2021 at 20:28:20 UTC, Alexandru Ermicioi 
wrote:
> On Tuesday, 17 August 2021 at 19:53:52 UTC, james.p.leblanc 
> wrote:
>>
>> Wow!  That is absolutely beautiful ... I had never seen (or 
>> even
>> imagined) a recursive template!  This expands my mind in a good
>> way ... and is going into my toolbox immediately.
>>
>> Best Regards,
>> James
>
> Just don't over rely on it. It can cause compilation slowdowns, 
> so avoid it if you can.

I've been happily trying to absorb all the helpful concepts 
posted.

A final related question in the quest for simplicity and 
robustness.

If I wanted to ensure that a function accepts only arguments of
byte, int, uint, long, etc.  (i.e. integer-like types).  Is the 
accepted
way to do this like so?:

**auto foo( T : long )(T a, T b){ ... }**

I really wish I could find a good explanation of the ":" (colon)
used in templates.  I am sure one exists ...but haven't come upon
it just yet.

(I thought "isIntegral" in traits module would be helpful...but
I failed in my experiments.)

Thanks for patience with this question!

Best Regards,
James



More information about the Digitalmars-d-learn mailing list