我用gcc/4.7,我需要實例化的模板函數(或成員函數)的模板,模板參數的類。我收到以下錯誤模板模板代碼不工作
test.cpp: In function 'void setup(Pattern_Type&)':
test.cpp:17:34: error: type/value mismatch at argument 1 in template parameter list for 'template<template<class> class C> struct A'
test.cpp:17:34: error: expected a class template, got 'typename Pattern_Type::traits'
test.cpp:17:37: error: invalid type in declaration before ';' token
test.cpp:18:5: error: request for member 'b' in 'a', which is of non-class type 'int'
通過註釋標註在片段中的兩行代碼運行,所以一個能在「主」,但不是「設置」實例化。我想,這將是爲其他人的利益,我會很高興地理解爲什麼代碼不起作用的原因。這裏的代碼
struct PT {
template <typename T>
struct traits {
int c;
};
};
template <template <typename> class C>
struct A {
typedef C<int> type;
type b;
};
template <typename Pattern_Type>
void setup(Pattern_Type &halo_exchange) {
A<typename Pattern_Type::traits> a; // Line 17: Comment this
a.b.c=10; // Comment this
}
int main() {
A<PT::traits> a;
a.b.c=10;
return 0;
}
感謝您的任何建議和修復! 莫羅
是否MSVC10下編譯。 –