Non avevo capito ciò che volevi fare.

Per accedere al tipo contenuto in CSizeVaringData potresti usare un typedef per poi riottenere il tipo dentro il metodo create. Ho fatto un piccolo esempio:
codice:
#include <iostream>

template<typename T> class Container {

  public:
  typedef T ContainerType;

  T value;

};

template<class Cont> void create(const Cont& container) {
  typename Cont::ContainerType foo; // <- Accedi al tipo contenuto in container.

  std::cout << foo << std::endl;
}

int main() {
  Container<int> intCont;
  Container<float> floatCont;
  Container<bool> boolCont;
  
  create(intCont);
  create(floatCont);
  create(boolCont);
}