Giant template - changing types everywhere
Cecil Ward
cecil at cecilward.com
Fri Jul 14 05:03:31 UTC 2023
On Friday, 14 July 2023 at 01:34:54 UTC, Steven Schveighoffer
wrote:
> On 7/13/23 8:08 PM, Cecil Ward wrote:
>
>> What I really want to do though is provide one single
>> templated function with the kind of characters / strings as a
>> parameter. I want to have something like
>> T Transform( T )( T str)
>> called as
>> auto result = Transform!(dstring)( dstring str );
>
> ```d
> T[] Transform(T)(T[] str)
> ```
>
> Note that you don't have to specify the type when calling:
>
> ```d
> Transform(someDstring); // infers dchar
> ```
>
>> I’m quite confused as to how to proceed. This is quite a large
>> module ~ 2k loc, and I don’t really want to go through and
>> change every private function into a templated one. Should I
>> just make the whole thing into a giant template containing
>> many functions?
>
> If you have more questions, please ask. Some examples of how
> making a template would be painful would be helpful.
>
> -Steve
The way I can see it going is a giant template encompassing
pretty much the whole file. Does that mean that the caller who
calls my one public function does so by passing the type dchar or
wchar ? And then we generate the strings from that. It might be
rather more natural for the caller to pass one of the string
types into the template. That’s where I get rather more confused,
say caller calls
Transform(dstring)(dstring str)
or can they just do Transform( "str"d ) and it would work out
that the type is immutable dchar[] ?
More information about the Digitalmars-d-learn
mailing list