我有一个期望两个参数模板的类,如下所示:
template<template <class, class> class TwoParamsClass>
class Test
{};
我也有这样的课程:
template<int a, class A, class B>
class ThreeParamsClass
{};
我需要一个适配器来设置“ThreeParamsClass”的第一个int参数,以便能够在Test类中使用它们。
这是我的部分解决方案(以及它的问题)。
template<int a>
struct Alias
{
template<class A, class B>
struct Type
{
typedef ThreeParmamsClass<a, A, B> Type2;
};
};
然后,我将测试称为:
Test<Alias<1>::Type>
(当然,在Test中我需要获取param并获取:: Type2类型)
但问题是,在那之后,我需要包装Test类,如下所示:
template<int n>
struct Wrap
{
typedef Test<Alias<n>::Type> WrappedTest;
};
但是,我收到了这个错误:
错误:类型/值不匹配 模板参数列表中的参数1 为'模板 T类&gt; class Test'
这很奇怪,因为这很好用:
template<int n>
struct Wrap
{
typedef Test<Alias<1>::Type> WrappedTest;
};
我希望明确,我想对这个问题提出两个问题,但我认为最好将第二个问题纳入第一个问题。
由于
答案 0 :(得分:2)
不是真的理解你的推理,但试试这个:
template<int n>
struct Wrap
{
typedef Test<Alias<n>::template Type> WrappedTest;
};