Как сослаться на шаблон псевдонима класса A
, заданного в качестве параметра шаблона для класса C
, который наследуется от базового класса шаблона B
?
#include <vector>
struct A
{
// the alias template I want to refer to:
template<class T>
using Container = std::vector<T>;
};
// the base class
template<template<class> class _Container>
struct B
{
_Container<int> m_container;
};
template<class _A>
struct C : public B< typename _A::Container >
{// ^^^^^^^^^^^^^^^^^^^^^^
};
int main()
{
C<A> foo;
}
Я пробовал несколькорешение путем добавления ключевого слова template
в каждое возможное место в выражении (например, template<class T> typename _A::Container<T>
, typename _A::template Container
...), но g++
дает либо "недопустимый аргумент шаблона 1" или "несоответствие типа / значения" !