Bug or intended?

cy via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Feb 8 00:22:55 PST 2016


On Saturday, 6 February 2016 at 14:15:04 UTC, rsw0x wrote:
> I was playing around with alias templates and came across this, 
> I reduced it to:
>
> ---
> struct A(alias C c){
>
>   auto foo(){
>     return c.i;
>   }
> }
>
> struct B{
>   C c;
>   A!c a;
> }
>
> struct C{
>   int i;
> }
> ---
>
> It gives me a "need 'this' for 'i' of type 'int'" error.

I think the "alias C c" you pass actually must be a value "c" of 
some sort. A!c would have to produce a different A struct, for 
every c value. (as opposed to A!C which works fine.) So, if you 
made B with a C with an i = 23, then you'd have an A!(23) and if 
you made another one with i = 42, you'd have an A!(42).

That doesn't seem very useful, for general integers. Maybe if it 
was an enum of finite, limited size it'd make sense.


More information about the Digitalmars-d-learn mailing list