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