dimanche 1 septembre 2019

Differentiate between user type and primitives

I'm trying to differentiate between user types and primitive types in a variadic template.

I have tried overloading binary operator, but that only says that there's no fitting overload for 'user types'...

template <typename T>
void PrintParams(T t)
{
    if (IsAUserType)
        std::cout << typeid(first).name();
    else
                std::cout << first;
}

    template <typename First, typename... Rest>
void PrintParams(First first, Rest... rest)
{
    if (IsAUserType)
        std::cout << typeid(first).name();
    else
                std::cout << first;

    PrintParams(rest...);
}

    // If you know what to do with this, then that would also be very helpful...
    //Overload << operator for user types
//template <typename T>
//friend std::ostream& operator<< (std::ostream& os, T t)
//{
            // 
    //if (std::is_fundamental<t>::value)
        //std::clog << t;
    //else
        //std::clog << typeid(t).name();
//}

expected result for input like (class test, 3.4, "string") would be "test3.4string"

Aucun commentaire:

Enregistrer un commentaire