On type functions
Andrej Mitrovic
andrej.mitrovich at gmail.com
Tue May 5 05:03:21 UTC 2020
On Sunday, 3 May 2020 at 10:52:37 UTC, Stefan Koch wrote:
> If there are any other open questions about how this is
> supposed to work I am happy to answer them.
This is really cool!
I always thought using recursion is awkward and that we needed
something better. I posted about it a long time ago [in a galaxy
not too far away]:
https://forum.dlang.org/post/mailman.62.1396532327.19942.digitalmars-d@puremagic.com
The linked post pasted verbatim here:
-----
template FilterInts(Args...)
{
foreach (T; Args)
{
static if (is(T == int))
FilterInts ~= T; // populate a type tuple
}
}
void main()
{
static assert(is(FilterInts!(int, float, int, string) ==
TypeTuple!(int, int)));
}
-----
Or another one:
-----
template GetFirstArray(Args...)
{
foreach (T; Args)
{
static if (isArray!T)
{
GetFirstArray = T;
break;
}
}
}
void main()
{
static assert(is(GetFirstArray!(int, int[], float, float[])
== int[]));
}
-----
But I like the explicitness of `alias` for type functions.
More information about the Digitalmars-d
mailing list