有沒有辦法從模板專業化模板中獲取模板?例如。 std::unordered_map
從std::unordered_map<char, char>
類型的變量作爲模板模板參數傳遞。模板專業化模板
小例子:
#include <unordered_map>
template <template <class ...> class t_map>
class A
{
public:
typedef t_map <int, int> map_type;
};
int main(int argc, char const **argv)
{
std::unordered_map<char, char> map;
// decltype yields std::unordered_map<char, char> (as expected).
typename A<decltype(map)>::map_type map_2;
return 0;
}
這取決於你想用模板做什麼。一般來說,你可以傳遞類型而不是模板。你可能能夠取代模板參數。你能給更多的上下文嗎? – MarkusParker
我有幾個類(爲了多態性)採用模板模板參數並從中進行專門化。這些類爲地圖類型容器提供了一個最小的接口。一個需要一個'std :: map',另一個'std :: vector'並且實現完美的哈希。爲了測試這些類的許多專業化,編寫一個函數只需要一個模型容器(例如'std :: map'),然後將其傳遞給我的類就可以了。 –
tsnorri