我想編寫一個函數模板來處理向量,列表,集合... 並且想要分別編寫專門化函數來處理映射, 編寫了下面的代碼,編譯器報告錯誤。使用tempates作爲參數時的函數模板專業化
任何一個可以幫助我如何修改它?
#include <iostream>
#include <string>
#include <map>
#include <unordered_map>
using namespace std;
// test() for the vectors, lists, sets, ...
template <template <typename...> class T>
void test()
{
T<string, int> x;
//...
}
// specialize test() for map
template <>
void test <map<> class T>()
{
T<string, int> x;
//...
}
int main()
{
test<map>();
test<unordered_map>();
}
什麼樣的錯誤? – songyuanyao
; ---------使用code :: blocks + gcc4.7.1編譯舊代碼時出現以下錯誤: mingw32-g ++。exe -Wall -fexceptions -std = C++ 11 -g -c main.cpp -o obj \ Debug \ main.o main.cpp:138:16:錯誤:模板參數數量錯誤(0,應該是4)在從c:\ mingw \ bin ../ lib包含的文件中/gcc/mingw32/4.7.1/include/c++/map:61:0,from main.cpp:11:c:\ mingw \ bin ../ lib/gcc/mingw32/4.7.1/include/C++/bits /stl_map.h:90:11:錯誤:爲'模板類std :: map'main.cpp:138:6提供:錯誤:template test'test < >'for'void test()'不匹配任何模板聲明 – shavian