[英]How declare return type as inner class of template typename?
如何聲明:
template<typename T>
(T::ABC)& get();
它給出了錯誤:
error: expected constructor, destructor, or type conversion before ‘&’ token
正確的形式沒有括號
typename T::ABC
因為帶括號的形式
(typename T::ABC)
是強制轉換運算符,而不是類型!
此外,關鍵字typename
是必需的,因為T:ABC
是“從屬類型”:如果不使用typename
,則將表達式T:ABC
解釋為好像ABC是類T的成員,而不是嵌套類型) 。
使用typename
關鍵字:
template<typename T>
typename T::ABC& get();
它一定要是:
template<typename T>
typename T::ABC& get();
但我試過了,這不起作用:
template<typename T>
(typename T::ABC)& get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.