Erroneous "auto can only be used for template function parameters"?

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jun 22 06:49:21 PDT 2015


On 6/20/15 10:26 PM, Yuxuan Shui wrote:
> On Sunday, 21 June 2015 at 01:26:51 UTC, Adam D. Ruppe wrote:
>> On Saturday, 20 June 2015 at 01:50:11 UTC, Yuxuan Shui wrote:
>>> auto ref R) is indeed a template function, so I don't understand.
>>
>> But R is not a parameter on the function itself. It comes from the
>> outside template.
>>
>> Move it to the inside template, rewrite it as:
>>
>>     auto a(S, R)(auto ref R i) {
>>         return cast(S)i*2;
>>     }
>>
>> and you should get further.
>
> But surely nested template should be able to access outer template's
> parameter.

If you have to instantiate it to see how to instantiate it, it doesn't 
work. General rule of thumb on templates. IFTI only works at one level.

-Steve


More information about the Digitalmars-d-learn mailing list