[英]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.