使用输入模板参数的typedef作为模板化父类的输入

时间:2015-02-03 18:29:04

标签: c++ templates crtp policies

我正在尝试构建一个实现改变行为的策略的程序。我有一个主梯度下降类,它采用两个策略,processingPolicy和threadingPolicy。 然后我有另一个特定的类通过奇怪的递归模板模式继承渐变下降类。 现在特定的类也使用不同的策略,其中一个策略也应该改变梯度下降的线程策略。 所以我想做以下事情:

template<class _C, class _TP, class _PP> class GradientDescent: public _TP, public _PP
{
};

template<class _TP> specificImplementation: 
    public _TP, 
    public GradientDescent<specificImplementation<_TP>, _TP::GDTP, _TP::GDPP>{
};

class specificImplementationPolicy1{
typedef GDTP1 GDTP;
typedef GDPP1 GDPP;
};
class specificImplementationPolicy2{
typedef GDTP2 GDTP;
typedef GDPP2 GDPP;
};

现在理想情况下,具体实施的政策将通过typedef政策GDTP和GDPP来确定梯度下降的政策。但是当我这样做时,我得到以下编译器错误:

error C2923: 'GradientDescent' : '_TP::GDTP' is not a valid template type argument for parameter '_TP'

0 个答案:

没有答案