Как насчет шаблона, принимающего шаблон?
С помощью следующей строки вы можете объявить шаблон, принимающий шаблон, и назвать его типовые аргументы типов:
template<
template<typename, typename> class D,
typename A, typename B>
С помощью этой записиВы говорите, что D - это параметр шаблона, который сам по себе является шаблоном, а A
и B
- это типы, которые он принимает. Теперь вы можете обратиться к первому и второму параметру шаблона D с именами A
и B
.
using namespace std;
template<class A, class B>
class C{
public :
A a;
B b;
};
template<template<typename, typename> class T, typename A, typename B>
class M{
public :
B f; //!!!!!!!!!!!!!!!!
void show(){cout<<f;}
};
int main(){
M<C, int, float> m;
m.show();
}
Для получения дополнительной информации проверьте этот ответ.