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