Why is the output of this code :
#include
template void f(T param)
{
std::cout << \"General\" << std::e
I know it is not answer but, IMHO you can try this, with a trait like approach in a struct:
template
struct value_traits
{
static void print(){std::cout << "General" << std::endl ;}
};
template<>
struct value_traits
{
static void print(){std::cout << "const long" << std::endl ;}
};
template<>
struct value_traits >
{
static void print(){std::cout << "std::vector" << std::endl ; }
};
template<>
struct value_traits
{
static void print(){std::cout << "const int" << std::endl ;}
};