Здравствуйте, <Аноним>, Вы писали:
<>
Вообще, шаблон может быть параметризован шаблоном.
template< class A, template<class> class B >
class YourTemplateClass
{
typedef B<int> bint_type;
};
class SetOfBTypes
{
template<class T> class BFirst { ... };
template<class T> class BSecond { ... };
// от этих классов требуется, чтобы они были моделью "шаблон с одним параметром - классом"
typedef YourTemplateClass< char, BFirst > FirstClass;
};
но не все компиляторы это понимают и любят.
Выход из ситуации — это упрятывание шаблона вглубь.
template< class A, class BWrapper >
{
typedef typename BWrapper::B<int> bint_type;
};
class SetOfBTypes
{
struct BFirst
{ template<class T> class B { ... }; };
struct BSecond
{ template<class T> class B { ... }; };
// от этих классов требуется, чтобы они были моделью "класс с публичным шаблонным типом B<class>"
typedef YourTemplateClass< char, BFirst > FirstClass;
};
... << RSDN@Home 1.1.0 stable >>