Вы не можете использовать operator ==, поскольку dataType известен только во время выполнения. Здесь вы в основном пытаетесь создать mimi c C -союзы, которые совершенно не связаны с шаблонами. Обратите внимание, что как только вы получите SomeClass в качестве параметра, вы не сможете на самом деле различать guish между базовыми типами во время компиляции.
Я бы предложил этот код:
#include <bits/stdc++.h>
template<typename T, typename U>
void add(T* a, U* b)
{
using aDataType = T; // Unnecessary, but for the example
}
int main()
{
int i = 4;
float f = 4.3;
add(&i, &f);
return 0;
}