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