Giant template - changing types everywhere

Cecil Ward cecil at cecilward.com
Fri Jul 14 05:51:22 UTC 2023


On Friday, 14 July 2023 at 05:09:58 UTC, Cecil Ward wrote:
> On Friday, 14 July 2023 at 05:05:27 UTC, Cecil Ward wrote:
>> On Friday, 14 July 2023 at 05:03:31 UTC, Cecil Ward wrote:
>>> On Friday, 14 July 2023 at 01:34:54 UTC, Steven Schveighoffer 
>>> wrote:
>>>> [...]
>>>
>>> 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[] ?
>>
>> Perhaps I should just make up a small example file with two 
>> functions in it to see if I can get the syntax right?
>
> If I wrap the whole thing with a template declaration of the 
> xchar type, then can I get away with no changes to the 
> individual function definitions?

I tried it, wrapped the whole thing in a template definition and 
it compiled, but then my test file which calls Transform( 
someDString ) failed to compile with errors saying it couldn’t 
find the definition of Transform in the other module, which is or 
was public. It’s as if it is no longer public because it’s now 
inside the template.


More information about the Digitalmars-d-learn mailing list