spec: template instantiations
Paul Backus
snarwin at gmail.com
Sat Nov 21 00:40:34 UTC 2020
On Saturday, 21 November 2020 at 00:24:43 UTC, Dibyendu Majumdar
wrote:
> On Friday, 20 November 2020 at 20:59:56 UTC, Dibyendu Majumdar
> wrote:
>>
>> Suppose we have:
>>
>> template Transformer(From, To) // From and To are types, too
>> {
>> To transform(From from)
>> {
>> import std.conv;
>> return to!(To)(from);
>> }
>>
>> class Modificator
>> {
>> From f;
>> To t;
>> this(From f) { /*...*/ }
>> }
>> }
>>
>> Then is there way to instantiate both 'transform' and
>> 'Modificator' at once?
>
> I suppose answer is no? So when instantiating, it is always a
> particular member of the template that is instantiated?
Quite the opposite. When you instantiate a template, the entire
template body is instantiated at the same time. You can then
access individual members using the `.` operator. So for example:
alias Instance = Transformer!(int, string);
Instance.Modificator m = new Instance.Modificator(123);
string s = Instance.transform(123);
More information about the Digitalmars-d
mailing list