Is this a bug when creating proxies in classes?
Gary Willoughby via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Aug 26 11:13:50 PDT 2014
On Monday, 25 August 2014 at 21:14:42 UTC, Ali Çehreli wrote:
> On 08/25/2014 12:17 PM, "Marc Schütz" <schuetzm at gmx.net>" wrote:
>> On Monday, 25 August 2014 at 19:12:48 UTC, Marc Schütz wrote:
>>> On Monday, 25 August 2014 at 18:44:36 UTC, Ali Çehreli wrote:
>>>> It can be explained if the mixed-in template is evaluated at
>>>> the
>>>> mixin context without bringing in the imported modules to
>>>> that
>>>> context. I don't know whether it is true or whether it is a
>>>> known
>>>> limitation.
>>>
>>> You're right, that's it! It works when I import std.traits
>>> first.
>>>
>>> So... the fix is to import std.traits inside template Proxy.
>>> Going to
>>> submit a PR.
>>
>> https://github.com/D-Programming-Language/phobos/pull/2463
>
> Thanks! And I learned from you in the pull request the
> following fact:
>
> <quote>
> Quoting http://dlang.org/template-mixin :
> "Unlike a template instantiation, a template mixin's body is
> evaluated within the scope where the mixin appears, not where
> the template declaration is defined. It is analogous to cutting
> and pasting the body of the template into the location of the
> mixin."
> </quote>
>
> Ali
With that in mind what is strange is that if in my example you
change the class for a struct everything works as expected. Why
is that?
More information about the Digitalmars-d-learn
mailing list