簡體   English   中英

使用帶有reinterpret_cast()的typename

[英]using typename with reinterpret_cast()

如何創建一個reinterpret_cast結果的typename?

例如,

template<typename T1> class node{

public:

using null_sp2node = typename reinterpret_cast<shared_ptr<node<T1>>>(NULL);

};

以上生成以下編譯器錯誤:

錯誤:在'typename'之后需要一個限定名稱

reinterpret_cast返回一個 ,而不是一個類型。 具體來說,這是一個表達。 如果要獲取表達式的類型,正確的工具是decltype

using null_sp2node = decltype(reinterpret_cast<shared_ptr<node<T1>>>(NULL));

但是,因為reinterpret_cast<T>的結果是類型T的表達式,所以與以下內容相比,實際上沒有任何意義:

using null_sp2node = shared_ptr<node<T1>>;

當然,由於reinterpret_cast<shared_ptr<node<T1>>>(NULL)是以形式開頭的,因此無關緊要。 您不能reinterpret_cast空指針常量reinterpret_cast為非指針類型(某些整數類型除外)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM