Extracting template parameters

H. S. Teoh hsteoh at quickfur.ath.cx
Tue Nov 6 08:21:26 PST 2012


On Tue, Nov 06, 2012 at 04:20:34PM +0100, Joseph Rushton Wakeling wrote:
> Suppose that I have two struct templates which take identical
> parameter lists:
> 
>     struct Foo(T1, T2, T3)
>     {
>         ...
>     }
> 
>     struct Bar(T1, T2, T3)
>     {
>         ...
>     }
> 
> Now suppose that I have a Foo which has been instantiated with a
> given set of parameters.  Is there any way for me to say, "now
> instantiate a Bar with the same parameters?"

You could alias the parameters so that they're accessible from outside:

	struct Foo(T1, T2, T3)
	{
		alias T1 t1;
		alias T2 t2;
		alias T3 t3;
		...
	}

	struct Bar(X1, X2)
	{
		...
	}

	auto fooToBar(FooInstance)(FooInstance f)
	{
		return Bar!(f.t2, f.t3)();
	}

This works if T1, T2, T3 are types. If they're values, you'll need to
use enums in Foo instead.


T

-- 
There are three kinds of people in the world: those who can count, and those who can't.


More information about the Digitalmars-d-learn mailing list