August 01, 2013 Template for extracting types with staticMap? | ||||
|---|---|---|---|---|
| ||||
I find this template to be really handy for use with staticMap, and I'm wondering if it exists in Phobos in some form so that I can stop rewriting it:
private template Extract(string fieldName)
{
template Extract(T)
{
mixin(`alias Extract = T.`~fieldName~`;`);
}
}
Used like so:
struct Foo(T)
{
alias Type = T;
}
alias FooTypes = staticMap!(Extract!"Type", TypeTuple!(Foo!int, Foo!
double));
| ||||
August 01, 2013 Re: Template for extracting types with staticMap? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Justin Whear | On 8/1/13, Justin Whear <justin@economicmodeling.com> wrote:
> I find this template to be really handy for use with staticMap, and I'm wondering if it exists in Phobos in some form so that I can stop rewriting it:
Try this:
import std.typetuple;
template ExtractTypes(T)
{
static if (is(T : T!Y, Y...))
alias ExtractTypes = Y;
else
static assert(0);
}
struct Foo(T)
{
}
void main()
{
alias FooTypes = staticMap!(ExtractTypes, TypeTuple!(Foo!int, Foo!double));
pragma(msg, FooTypes);
}
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply