[問題] nested template class compile error
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
linux g++ 4.4.3
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
只是純粹對template的研究 偶然發現這樣的code編譯不會過
錯誤訊息
error: template argument 1 is invalid
error: expected unqualified-id before ‘>’ token
後來又發現在 outer 裡面加上 typedef 那一行
然後用 version 2 的 getInner 編譯就過了
不過基於好奇還是想知道為什麼 version 1 的 getInner 編不過
有神人知道為什麼嗎??
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
template <typename T>
class wapper {
};
template <typename T>
class outer {
public:
template <typename V>
class inner {
};
//typedef inner<T> Inner;
wapper<inner<T> > getInner();
};
// version 1
template <typename T>
wapper<typename outer<T>::inner<T> > outer<T>::getInner()
{
return inner<T>();
}
// version 2
#if 0
template <typename T>
wapper<typename outer<T>::Inner> outer<T>::getInner()
{
return inner<T>();
}
#endif
int main()
{
return 0;
}
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.147.15.66
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):