Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Class type from pointer used as template argument

If a pointer to an user defined type is passed as template argument to a template class, is it possible to get the class type of the argument?

template <class T> struct UserType {
    typedef T value_type;
    ...
};

int main () {
    typedef std::vector<UserType<double>*> vecType
    vecType vec;

    vecType::value_type::value_type m; //how to get the double here?

    return 0;
}
like image 832
DaClown Avatar asked Aug 12 '26 08:08

DaClown


2 Answers

Use traits:

template <typename> struct ptr_traits {};
template <typename T> struct ptr_traits<T*>
{ typedef T value_type; };

ptr_traits<vecType::value_type>::value_type m;
like image 80
Alexandre C. Avatar answered Aug 13 '26 21:08

Alexandre C.


Use boost::remove_pointer.

like image 31
Karl von Moor Avatar answered Aug 13 '26 21:08

Karl von Moor