2013-02-02 85 views
0

內部限定一個typedef是否有可能使用類型ý已經由一個typedef另一類型X的內三分之一模板型內Ž限定,從其中X充當Z的模板參數?使用模板類型名稱

這(非編譯)僞代碼說明所需的行爲:

struct X { 
    typedef float Y; 
}; 

template<typename T> 
struct Z { 
    void DoSomething(T::Y with_this); 
}; 

回答

3

是的,這是可能的。你只需要讓編譯器知道T::Y是一類,因爲它取決於T

void DoSomething(typename T::Y with_this); 
+1

如果你很好奇,這是因爲C++希望它知道什麼之前'T'是解析模板。不知道'T'是'T :: X'可能是成員函數,'enum'值還是靜態成員。爲了使它不含糊,我們需要用'typename'來說'輸入'。 – Yakk

相關問題