digitalmars.D.learn - Extracting Params of Templated Type
- Nick Sabalausky (9/9) Apr 03 2014 If you have a templated type, is there a way to get the compile-time
- Meta (6/16) Apr 03 2014 alias TemplateArgs(T: Foo!U, U) = U;
- Nick Sabalausky (2/7) Apr 03 2014 Ahh thanks.
- Andrej Mitrovic (2/3) Apr 04 2014 It's also in std.traits, TemplateArgsOf, which is more complete.
- Meta (3/6) Apr 04 2014 I thought I remembered that being in std.traits, but I couldn't
If you have a templated type, is there a way to get the compile-time parameters it was instantiated with? Ie: ---------------------- struct Foo(T) {} alias MyFoo = Foo!int; ---------------------- Is there a way to inspect MyFoo to get its T type (in this case, 'int')? *Without* actually making any changes to Foo to explicitly support this?
Apr 03 2014
On Friday, 4 April 2014 at 04:44:56 UTC, Nick Sabalausky wrote:If you have a templated type, is there a way to get the compile-time parameters it was instantiated with? Ie: ---------------------- struct Foo(T) {} alias MyFoo = Foo!int; ---------------------- Is there a way to inspect MyFoo to get its T type (in this case, 'int')? *Without* actually making any changes to Foo to explicitly support this?alias TemplateArgs(T: Foo!U, U) = U; void main() { assert(is(TemplateArgs!MyFoo == int)); }
Apr 03 2014
On 4/4/2014 1:02 AM, Meta wrote:alias TemplateArgs(T: Foo!U, U) = U; void main() { assert(is(TemplateArgs!MyFoo == int)); }Ahh thanks.
Apr 03 2014
On 4/4/14, Meta <jared771 gmail.com> wrote:alias TemplateArgs(T: Foo!U, U) = U;It's also in std.traits, TemplateArgsOf, which is more complete.
Apr 04 2014
On Friday, 4 April 2014 at 07:23:51 UTC, Andrej Mitrovic wrote:On 4/4/14, Meta <jared771 gmail.com> wrote:I thought I remembered that being in std.traits, but I couldn't find it after quickly skimming. I must've glanced over it.alias TemplateArgs(T: Foo!U, U) = U;It's also in std.traits, TemplateArgsOf, which is more complete.
Apr 04 2014