2016-01-08 36 views
3

這裏有什麼問題?不允許多個模板參數列表

struct fbe { 
    char *fbtName; 
    template<typename T, typename... vT> 
    T(*funcptr)(T, vT...); 
}; 

編寫這樣的代碼時,它有什麼不同?

template<typename T, typename... vT> 
struct fbe { 
    char *fbtName; 
    T(*funcptr)(T, vT...); 
}; 

我對使用模板函數很陌生。

+0

基本上你不能有模板化的成員變量。爲什麼這樣呢,波爾波森很好地回答了這個問題。 – AndyG

回答

8

不同之處在於,在第二種情況下,您可以使用模板參數來創建一組不同的結構體,它們都具有一個函數指針成員。

在第一種情況下,您將擁有一個具有無限數量的函數指針成員的單個結構類型。你不能這樣做,如果沒有別的,因爲同一個結構類型的所有對象必須具有相同的大小。