Stringify and Unstringify template arguments
suppose I have a lot of classes with their "*Pack" counterparts in naming. For example, if I have a class Moo, I have MooPack, if I have Foo, I also have FooPack.

I want to have a c++ templated function which returns a FooPack from a Foo

    template <class X, class XPack>
    XPack packify(X input){
       ...
    }

Is it possible to do this without having to specify the template argument? At the moment, this has to be done like the following:

    Moo moo;
    MooPack mooppey = packify<Moo, MooPack>(moo);

If it only required the Moo template argument, that ugly template specification bit could go away, but apart from using #defines, which isn't really the best solution either, still doesn't do it.

Is there a way, or will I have to wait for c++0x?
Stringify and Unstringify template arguments
===

suppose I have a lot of classes with their "*Pack" counterparts in naming. For example, if I have a class Moo, I have MooPack, if I have Foo, I also have FooPack.

I want to have a c++ templated function which returns a FooPack from a Foo

    template <class X, class XPack>
    XPack packify(X input){
       ...
    }

Is it possible to do this without having to specify the template argument? At the moment, this has to be done like the following:

    Moo moo;
    MooPack mooppey = packify<Moo, MooPack>(moo);

If it only required the Moo template argument, that ugly template specification bit could go away, but apart from using #defines, which isn't really the best solution either, still doesn't do it.

Is there a way, or will I have to wait for c++0x?