[英]Getting a typename given the typename of a pointer to it in C++
考慮以下代碼:
class c {
//...
};
template <typename T>
void f(T k)
{
auto item = new T;
//...
}
我們聲明一個類c
和一個模板函數f
,它們創建一個新的對象類型T
我想更改此函數f
以便template參數可以是指針類型 ,它將按如下方式使用:
auto ptr = new c;
f<c*>(ptr);
現在,當我嘗試創建新項目時,問題就來了auto item = new T;
,因為現在T
現在是指向c
的指針的類型名 。
我知道T
永遠是某個東西的指針, 我怎么能得到T
指向的類型名? 我想做類似的事情:
template <typename T>
void f(T k)
{
// If T = int* -> Q = int
typename ??????? Q; // <<<<<<<<
auto item = new Q;
//...
}
#include <type_traits>
using Q = typename std::remove_pointer<T>::type;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.