The error is that you are overriding the class TSin . I do not think you can do this.
What you can do is declare a generic template and define class definitions:
template <class Object, class Var, class Invert, class Step = Var, unsigned int FIXED = IW_GEOM_POINT> class TSin; template <class Object> class TSin<Object, CIwVec2, int, CIwVec2, IW_GEOM_POINT> {...
or specialize class member definitions:
template <class Object> void TSin<Object, CIwVec2, int, CIwVec2, IW_GEOM_POINT>::Foo(...) {...
or declare a subclass:
template <class Object, class Var, class Invert, class Step = Var, unsigned int FIXED = IW_GEOM_POINT> class TSin : public BasicTween<Object, Var> {... template <class Object> class SpecialTSin::public TSin<Object, CIwVec2, int, CIwVec2, IW_GEOM_POINT> {...
I think the last option is the best.
source share