Как передать параметры в шаблон шаблона параметра - PullRequest
2 голосов
/ 22 января 2012

Я пытаюсь сделать что-то вроде этого:

ClassA:

template < typename T1, typename T2 = int >
class ClassA {};

ClassB, используя ClassA в качестве реализации хранилища:

template 
<
 typename T,
 template < typename = T, typename = int > class Storage = ClassA
>
class ClassB : public Storage<T> {};

Теперь я могусоздать экземпляр ClassB:

ClassB<double>          myClass;    // Ok, using ClassA (implicit) with <double,int> (implicit)
ClassB<double,ClassA>  myClass2;    // Ok, using ClassA (explicit) with <double,int> (implicit)
ClassB<double,ClassA<double,int>> myClass3; // Not ok, can't using ClassA (explicit) with <double,int> (explicit)

Как я могу параметризовать хранилище (ClassA) для ClassB?

1 Ответ

2 голосов
/ 22 января 2012

Вы помещаете их в отдельный параметр.ClassA<double,int> уже является типом, поэтому его нельзя использовать для параметра шаблона шаблона.

template<typename T,
         template <typename, typename> class Storage = ClassA,
         typename StorageT1 = T,
         typename StorageT2 = int>
class ClassB : public Storage<StorageT1, StorageT2> {};

ClassB<double> myClass;
ClassB<double, ClassA> myClass2;
ClassB<double, ClassA, double, int> myClass3;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...