我想设计一个创建内部类型的类,这些内部类型是作为模板参数传递的类型的变体。类似于以下非功能示例:
template <typename T>
class BaseClass
{
public:
typedef T InternalType;
std::vector<InternalType> storage;
};
template <typename Base>
class Injector
{
public:
typedef std::pair<typename Base::InternalType, typename Base::InternalType> RefinedType;
Base<RefinedType> refinedStorage;
};
typedef Injector<BaseClass<int> > InjectedInt; // Should store vector<pair<int, int> >
由于Base
是完全指定的类型,Base<RefinedType> refinedStorage;
因此将无法编译。简单地使用模板模板参数是行不通的,因为精炼类型需要基于嵌套模板的参数及其基本类型。
如何实现这种基于模板参数的完全指定类型和基本类型创建类型的模式?
编辑:我希望这是一个任意深度的复合,多个注入器类型执行级联转换。因此,同时传递模板模板参数和基本参数变得非常笨拙(特别是在处理复合的基本情况时),理想的解决方案将使用更直接的语法。