May 19, 2016 template instantiation | ||||
---|---|---|---|---|
| ||||
///Hello, i'm trying to implement d compiler and i've problems with some template corner cases. class Type{} class Foo(T : const T){ alias X = T; } alias Bar(T : Foo!Ts, Ts...) = Ts[0]; pragma(msg, "Foo1: ", Foo!(immutable Type).X); //Foo1: Type pragma(msg, "Foo2: ", Foo!(Type).X); //Foo2: Type pragma(msg, "Bar: ", Bar!(Foo!(Type))); //Bar: immutable(Type) Last pragma attempted to extract template parameters from 'Foo!(Type)' but since Foo!(immutable Type) == Foo!(Type) and Foo!(immutable Type) was instantiated first, it extracted wrong type. If we change order of 1. and 2. pragma, result of 3. pragma will be Type and not immutable(Type). Is this a bug? |
May 20, 2016 Re: template instantiation | ||||
---|---|---|---|---|
| ||||
Posted in reply to vit | On Thursday, 19 May 2016 at 20:14:48 UTC, vit wrote: > Is this a bug? Yes. I've filed a report: https://issues.dlang.org/show_bug.cgi?id=16050 |
Copyright © 1999-2021 by the D Language Foundation