Ultima modifica:
Il titolo potrebbe non sembrare molto chiaro, quello che sto cercando di fare è, avendo una funzione parametrica del tipo:
e delle specializzazioni di questo tipo:
Voglio definire delle specializzazioni di questo tipo:
Per far si che la funzione
C++:
template<class _Ty>
static void test(_Ty Var)
{
std::cout << "Generic type" << std::endl;
}
e delle specializzazioni di questo tipo:
C++:
template<>
static void test<int>(int Var)
{
std::cout << "Int type" << std::endl;
}
template<>
static void test<float>(float Var)
{
std::cout << "Float type" << std::endl;
}
Voglio definire delle specializzazioni di questo tipo:
C++:
// Specializzazione per dei vettori di interi
template<>
static void test<std::vector<int>>(std::vector<int> Var)
{
std::cout << "Int vector type" << std::endl;
}
// Questa dovrebbe essere la specializzazione per i vettori di
// qualsiasi altro tipo, però non è valida per il compilatore
template<class _Ty>
static void test<std::vector<_Ty>>(std::vector<_Ty> Var)
{
std::cout << "Generic vector type" << std::endl;
}
Per far si che la funzione
test<std::vector<_Ty>>
venga chiamata quando la tipologia del parametro sia un std::vector
, ma il contenuto del vettore non sia conosciuto, e non riesco a trovare una soluzione a questo problema , qualche aiuto?