template alias that includes a parameter
Simen Kjærås
simen.kjaras at gmail.com
Sun Jul 1 01:48:15 UTC 2018
On Saturday, 30 June 2018 at 21:11:54 UTC, Anonymouse wrote:
> I have a template that I want to provide easy aliases for,
> where the aliases includes (partially applies?) a template
> parameter.
>
>
> void fooImpl(char token, T)(const T line)
> {
> // ...
> }
>
> alias quoteFoo(T) = fooImpl!('"', T);
> alias singlequoteFoo(T) = fooImpl!('\'', T);
>
> void main()
> {
> quoteFoo(`"asdf"`);
> singlequoteFoo(`'asdf'`);
> }
I'd send you straight to std.meta.ApplyLeft, but it seems to do
the wrong thing here, in that it doesn't handle IFTI. This thing
does:
void fooImpl(int n, T)(const T line) { }
unittest {
alias fun = applyLeft!(fooImpl, 3);
fun(`aaa`);
applyLeft!(fooImpl, 3)(`aaa`);
}
template applyLeft(alias Fn, T...) {
auto applyLeft(U...)(U args) {
return Fn!T(args);
}
}
--
Simen
More information about the Digitalmars-d-learn
mailing list