TransformConverter<> implements the meat of TransformCast. It does it's work through the templatized static member function Convert. By default this method uses a conversion ctor to construct a T from a T2. Therefore your class can either provide such conversion ctors or specialize TransformConverter::Convert for each transform type you can cast to.