对于我的生活,我无法得到这个前瞻性的声明来编译。一切看起来语法正确,但我得到类型/值不匹配错误。
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;
声明此模板别名的正确方法是什么?
答案 0 :(得分:4)
CF
需要一个模板:CE_Less
不是模板别名,它是一个简单的别名,您可能打算使用模板别名:
template<class T>
using CE_Less = C::E<std::less<T>>;
using CF_Less = CF< CE_Less >;