Consider the following code:
class c {
//...
};
template <typename T>
void f(T k)
{
auto item = new T;
//...
}
We declare a class c
and a template function f
that creates a new object type T
.
I want to change this function f
so the template parameter can be a pointer type, it will be used as follows:
auto ptr = new c;
f<c*>(ptr);
Now, the problem comes when I try to create a new item auto item = new T;
, because now T
is now the typename of a pointer to c
.
I know T
will always be a pointer to something, how can I get the typename being pointed to by T
? I want to do something like:
template <typename T>
void f(T k)
{
// If T = int* -> Q = int
typename ??????? Q; // <<<<<<<<
auto item = new Q;
//...
}
Aucun commentaire:
Enregistrer un commentaire