Forzar método de plantilla en clase sin plantilla

Intento lograr el siguiente comportamiento / sintaxis / uso de esta clase:

Data1 dataType1;
Data2 dataType2;

int intType;
float floatType;

dataType1.method( intType );
dataType1.method( floatType );

dataType2.method( intType );
dataType2.method( floatType );

Mi enfoque sería este:

struct CDataBase
{
    template< typename T > virtual void method( T type ) = 0;
};

struct CData1 : CDataBase
{
    template< typename T > void method( T type ) {}
};

struct CData2 : CDataBase
{
    template< typename T > void method( T type ) {}
};

Sin embargo, los métodos de plantilla virtual no son posibles. Además, no hay necesidad de una clase base real. Sin embargo, debo asegurarme de que algunas clases tengan implementado un 'método ()' (plantilla).

¿Cómo fuerzo a una clase / estructura sin plantilla para anular un método de plantilla?

EDITAR: Este es mi diseño real:

struct Data0
{
    int someVar;

    template< class T >
    void decode( T& type )
    {
        type.set( someVar );
    }
};

EDITAR: en la versión actual de C ++ (11) el comportamiento que intento lograr no es posible. Además de eso, realmente debería recodificar esta parte para evitar este problema. Sin embargo, acepto la única respuesta dada, gracias por tu afecto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta