By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,898 Members | 2,012 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,898 IT Pros & Developers. It's quick & easy.

Possible to partially typedef templates?

P: n/a
Hi all, i have a Vector class (as in mathematical vectors) which is
templatised on two parameters, the length of the vector and it's type
(int,double,etc). I am able to use a typedef like the folowing:

typedef Vector<3,floatVector3DFloat;
Vector3DFloat myVector;

so that users can now use Vector3DFloat as a type in thier code.
However, i would like to just typedef away *one* of the parameters
which i would expect to look something like the following:

typedef Vector<3,TypeVector3D<Type>;
Vector3D<floatmyVector;

The above doesn'tcompile but hopefully illustrates what I am trying to
do. Is there a way to make this work?

Thanks,

David

Oct 1 '06 #1
Share this Question
Share on Google+
3 Replies


P: n/a

es*****@googlemail.com napsal:
Hi all, i have a Vector class (as in mathematical vectors) which is
templatised on two parameters, the length of the vector and it's type
(int,double,etc). I am able to use a typedef like the folowing:

typedef Vector<3,floatVector3DFloat;
Vector3DFloat myVector;

so that users can now use Vector3DFloat as a type in thier code.
However, i would like to just typedef away *one* of the parameters
which i would expect to look something like the following:

typedef Vector<3,TypeVector3D<Type>;
Vector3D<floatmyVector;

The above doesn'tcompile but hopefully illustrates what I am trying to
do. Is there a way to make this work?
No, there's no elegant solution to this. C++0x will (hopefully) have
"template
typedefs", which is just what you want. If you want further details
including possible workarounds, see
http://www.ddj.com/dept/cpp/184403850

Regards
Jiri Palecek

Oct 1 '06 #2

P: n/a

es*****@googlemail.com wrote:
Hi all, i have a Vector class (as in mathematical vectors) which is
templatised on two parameters, the length of the vector and it's type
(int,double,etc). I am able to use a typedef like the folowing:

typedef Vector<3,floatVector3DFloat;
Vector3DFloat myVector;

so that users can now use Vector3DFloat as a type in thier code.
However, i would like to just typedef away *one* of the parameters
which i would expect to look something like the following:

typedef Vector<3,TypeVector3D<Type>;
Vector3D<floatmyVector;

The above doesn'tcompile but hopefully illustrates what I am trying to
do. Is there a way to make this work?

Thanks,

David
You cannot typedef templates with the template parameters. However you
can simulate the effect by introducing an intermediate type.
You can refer to Herb Sutter's GOTW here..

http://www.gotw.ca/gotw/079.htm

Oct 1 '06 #3

P: n/a
Ok, thanks to both of you. It looks like i can get around the problem
with Herb Sutters solution until C++0x arrives...

Thanks again,

David

Oct 2 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.