Possible to partially typedef templates?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • esuvs81@googlemail.com

    Possible to partially typedef templates?

    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,floatV ector3DFloat;
    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,TypeVe ctor3D<Type>;
    Vector3D<floatm yVector;

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

    Thanks,

    David

  • jpalecek@web.de

    #2
    Re: Possible to partially typedef templates?


    esuvs81@googlem ail.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,floatV ector3DFloat;
    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,TypeVe ctor3D<Type>;
    Vector3D<floatm yVector;
    >
    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


    Regards
    Jiri Palecek

    Comment

    • amparikh@gmail.com

      #3
      Re: Possible to partially typedef templates?


      esuvs81@googlem ail.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,floatV ector3DFloat;
      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,TypeVe ctor3D<Type>;
      Vector3D<floatm yVector;
      >
      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..



      Comment

      • esuvs81@googlemail.com

        #4
        Re: Possible to partially typedef templates?

        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

        Comment

        Working...