On Friday, 30 March 2018 at 13:56:45 UTC, Stefan Koch wrote:
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.
If a template is used as a type it should be resolved to a type,
no? And template resolves to a type in a straightforward way.
Where does it fail? Judging by the error message "cannot deduce
function from argument types !()(TestType!int)" it does
successfully resolve alias to a type.