Is there a way to set an alias to specific form of a template?

Roderick Gibson kniteli at gmail.com
Fri Oct 7 18:29:26 PDT 2011


This may be the completely wrong approach, but I am basically thinking 
of something like this (I am aware this will not compile, it's psuedocode):

class Vector(T) {
	... //definition here
}

alias Vector(float, float) vec2f;
auto v = new vec2f(1.0,1.0);

I am making a templated Vector class (a mathematical vector) that will 
have varying types (thus a template) and dimensions (via variadic 
functions), so that the same template definition will work for 2d or 3d 
vectors (or 4d, etc). I then want the programmer to be able to define 
the specific forms that he wants so he can easily keep track of them 
(without getting confused about which is a 2d integer vector and which 
is a 3d float vector), and then use those forms in a type safe manner. 
Is this even possible? If it is, but it's the wrong way to do it, what's 
the right way?

Basically I wanted to write it once and not worry about writing it again 
to handle different types and dimensions (no vec2i class, or vec2f, or 
vec3f, or vec3i, etc). Templates easily handles the type requirement, 
but what about the dimensional requirement? Am I just going to have to 
rewrite it when I add dimensions?


More information about the Digitalmars-d-learn mailing list