【发布时间】:2011-12-29 14:46:06
【问题描述】:
我正在尝试对模板运算符进行专门化,模板如下所示:
template <typename Iterator1, typename Iterator2>
ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType worst_dist = -1) const
在我完成了如下所示的专业化之后:
template <>
float operator()<float*,float*>(float* a, float const* b, unsigned long size, float worst_dist = -1) const
编译时出现错误:
无法在类范围内专门化函数“operator()”
所有这些功能都在结构模板中
我很乐意得到一些帮助。 谢谢。
【问题讨论】:
-
当您说“规范”时,您的意思是“专业化”吗?
-
我认为 [this SO question/answer][1] 可能正在回答您正在尝试做的事情。 [1]:stackoverflow.com/questions/4920068/…
-
什么是
ResultType?它应该是您的模板参数之一吗? -
这两个声明到底发生在哪里?正如消息所示,不允许您在类定义中专门化函数。
-
@Ran 那么您的专业化与您尝试专业化的模板不匹配 - 它必须如此。对于
size参数,您使用unsigned long而不是size_t,对于worst_dist,使用float而不是ResultType。