使用模板模板参数转发声明

时间:2014-12-14 21:18:52

标签: c++ templates

对于我的生活,我无法得到这个前瞻性的声明来编译。一切看起来语法正确,但我得到类型/值不匹配错误。

namespace C {
   template <class TBinaryPredicate> class E;
}

template< template<typename> class TField> class CF;

using CE_Less = C::E<std::less<Date>>;
using CF_Less = CF<CE_Less>;  <==== COMPILER NOT HAPPY HERE

编译器错误:

  

错误:模板参数列表中参数1的类型/值不匹配&#39;模板类TField&gt; CF级&#39;

声明此模板别名的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

CF需要一个模板:CE_Less不是模板别名,它是一个简单的别名,您可能打算使用模板别名:

template<class T>
using CE_Less = C::E<std::less<T>>;

using CF_Less = CF< CE_Less >;