2012-10-23 57 views
-1

說,我們有一個結構模板採取一個類,這個類的成員之間有指針:指針上的成員,模板參數語法

struct A<A,&A::a> 

我不能宣佈模板一樣,

template<class T,class U> 
struct{}; 

我必須寫

template<class T,typename T::type var> 
struct{}; 

爲什麼&A::a不能被綁定到一個簡單的typename T語法?之前一個部件上的指針,&A::a是一種類型,所以我們可以期待一個簡單的類型名稱牛逼的作品,但不是的情況下

+0

感謝編輯 – Guillaume07

回答

2

&A::a,不是。所以模板聲明沒有意義。

下面是它如何工作的:

template <typename A, int A::* Ptr> struct Foo { }; 

struct Bar { int n; }; 

int main() 
{ 
    Foo<Bar, &Bar::n> f; 
} 

,或者更一般地說,

template <typename T, typename U, U T::* Ptr> struct Foo { }; 

Foo<Bar, int, &Bar::n> f; 
相關問題