template template parameter

Ali Çehreli acehreli at yahoo.com
Thu Mar 31 11:00:38 PDT 2011


On 03/30/2011 04:32 PM, Caligo wrote:
 > I have a struct that looks something like this:
 >
 > struct Box(T, size_t width, size_t height){
 >
 > alias width width_;
 > alias height height_;
 >
 > //do something with a Box of different size
 >    void Fun( B )(B b){
 >      // using width and height of b
 >      B.width_;
 >      B.height_;
 >    }
 > }
 >
 > auto b1 = Box!(double, 2, 7)();
 > auto b2 = Box!(double, 3, 4)();
 > b1.Fun(b2);
 >
 > I think the technical name for this is template template parameter.
 > Using the above I'm able to do what I need to do, but is there a
 > better way?
 > and should I use alias or enum?

You later also said:

 > how do I access the parameters of a template parameter

With the help of function template parameter deduction, I was able to do 
it by spelling out the parameters of Fun:

import std.stdio;

struct Box(T, int width, int height)
{
     void Fun(T2, int width2, int height2)(Box!(T2, width2, height2) b)
     {
         writeln(width2, ' ', height2);
     }
}

void main()
{
     auto b1 = Box!(double, 2, 7)();
     auto b2 = Box!(double, 3, 4)();
     b1.Fun(b2);
}

Ali



More information about the Digitalmars-d-learn mailing list