Re: Extracting Params of Templated Type

2014-04-04 Thread Andrej Mitrovic
On 4/4/14, Meta jared...@gmail.com wrote:
 alias TemplateArgs(T: Foo!U, U) = U;

It's also in std.traits, TemplateArgsOf, which is more complete.


Re: Extracting Params of Templated Type

2014-04-04 Thread Meta

On Friday, 4 April 2014 at 07:23:51 UTC, Andrej Mitrovic wrote:

On 4/4/14, Meta jared...@gmail.com wrote:

alias TemplateArgs(T: Foo!U, U) = U;


It's also in std.traits, TemplateArgsOf, which is more complete.


I thought I remembered that being in std.traits, but I couldn't 
find it after quickly skimming. I must've glanced over it.


Extracting Params of Templated Type

2014-04-03 Thread Nick Sabalausky
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?


Re: Extracting Params of Templated Type

2014-04-03 Thread Meta

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));
}


Re: Extracting Params of Templated Type

2014-04-03 Thread Nick Sabalausky

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.