Czy istnieje sposób na uzyskanie szablonu ze specjalizacji szablonu? Na przykład. std::unordered_map
ze zmiennej typu std::unordered_map<char, char>
, która ma być przekazana jako parametr szablonu szablonu.Szablon ze specjalizacji szablonów
Minimal przykład:
#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;
}
To zależy od tego, co chcesz zrobić z szablonu. Ogólnie można przekazywać typy, ale nie szablony. Możliwe, że możesz zastąpić parametry szablonu. Czy możesz podać więcej kontekstu? – MarkusParker
Mam kilka klas, które (ze względu na polimorfizm) podjąć parametr szablonu szablonu i dokonać z niego specjalizacji. Klasy zapewniają minimalny interfejs do kontenera mapowego. Jeden bierze 'std :: map', inny' std :: vector' i implementuje doskonałe hashowanie. Aby przetestować wiele specjalizacji klas, wygodnie byłoby napisać funkcję, która pobierałaby tylko kontener modelu (np. 'Std :: map'), którego szablon zostałby następnie przekazany do mojej klasy. –
tsnorri