【发布时间】:2019-11-14 10:14:49
【问题描述】:
我有以下示例代码:
template<int Size, template<typename Tin, int S> typename Cin, template<typename Tout, int S> typename Cout>
Cout<Tout, Size> SomeTemplatedMethod(const Cin<Tin, Size> &inputData) /* Here the definition fails on Tout and Tin as unknown. */
{
Cout<Tout, Size> result; // Here Tout doesnt fail!
//Whichever we do with inputData and result
return result;
}
代码在方法的标头中失败,但在主体中没有! 我发现解决此问题的一种方法是这样做:
template<int Size, template<typename, int> typename Cin, template<typename, int> typename Cout, typename Tin, typename Tout>
Cout<Tout, Size> SomeTemplatedMethod(const Cin<Tin, Size> &inputData) /* Here the definition doesn't fail. */
{
Cout<Tout, Size> result; // Here Tout doesnt fail!
//Whichever we do with inputData and result
return result;
}
但我绝对想使用第一种方式,因为它感觉更干净......
我正在使用 vc++14。我做错了什么?是错误还是预期行为?
谢谢!
【问题讨论】:
标签: c++ templates c++14 template-argument-deduction template-templates