19
template <size_t size, typename ...Params>
void doStuff(Params...) {
}
template <>
void doStuff<size_t(1), int, bool>(int, bool) {
}
int main(int, char**) {
doStuff<1,int,bool>(1, false);
return 0;
}
這不會編譯,第二個doStuff聲明給我error: template-id ‘doStuff<1u, int, bool>’ for ‘void doStuff(int, bool)’ does not match any template declaration
但它清楚地匹配第一個聲明與可變參數模板參數。模板專業化與可變模板
如何專門設計可變模板?
我使用gcc 4.5.2。感謝您的回答(我現在使用模板重載)。 – coyotte508
同樣適用於4.6.1,即在該版本中不支持以上... – Nim
或者,您可以將函數封裝在一個'template <..> struct Do {static void Stuff(..){}};'中。 –