ChainImpl save method
Steven Schveighoffer
schveiguy at yahoo.com
Wed Dec 29 12:35:31 PST 2010
On Wed, 29 Dec 2010 15:26:25 -0500, Andrej Mitrovic <none at none.none> wrote:
> I'm having trouble understanding this code in std.range.chainImpl:
>
> @property ChainImpl save()
> {
> auto result = ChainImpl();
> foreach (i, Unused; R)
> {
> result._input[i] = _input[i].save;
> }
> return result;
> }
>
> Specifically, line 1559 which is:
> auto result = ChainImpl();
>
> Let me see if I got my hunch right:
>
> Is this simply instantiating another implementation of ChainImpl with
> the same arguments? e.g. inside an already instantiated template with
> ChainImpl(Range1, Range2), would ChainImpl() simply instantiate another
> ChainImpl template with the same compile-time arguments? Of course, it
> wouldn't copy any runtime values since this is all done at compile-time
> and they don't exist yet.
Yes. Inside a template, the name of the template is synonymous with the
template instance being instantiated.
So for example:
struct S(T)
{
void foo(){ S s; // this is of type S!T
}
}
-Steve
More information about the Digitalmars-d-learn
mailing list