#dbugfix Issue 16486 200$
jmh530
john.michael.hall at gmail.com
Fri Mar 30 15:21:26 UTC 2018
On Friday, 30 March 2018 at 13:56:45 UTC, Stefan Koch wrote:
> On Friday, 30 March 2018 at 06:11:22 UTC, 9il wrote:
>> [1] https://issues.dlang.org/show_bug.cgi?id=16486
>
>
> Ah that is an interesting bug which further demonstrates that
> templates are a tricky thing :)
> Basically you cannot _generally_ proof that one template just
> forwards to another.
> Therefore you have to create separate types.
> And since you create separate types the alias is not an alias
> but a separate template.
> Solving this may be possible for special cases but in the
> general case is infeasible.
What about something like this (using the reduced example from
the bug report):
import std.traits : TemplateOf;
struct TestType(T) {}
alias TestAlias(T) = TestType!T;
template testFunction(T, alias U = TemplateOf!(TestAlias!T))
{
void testFunction(U!T arg) {}
}
void main()
{
TestAlias!int testObj;
testFunction(testObj);
}
More information about the Digitalmars-d
mailing list