Есть ли способ получить шаблон от специализации шаблона? Например. 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