我的班级声明开始如下:
template<
class P,
class B,
class comparePosition = compareHorizontal< P >
>
class BlahBlah { ...
compareHorizontal
模板函数在哪里。当我尝试编译时,clang 吐出
[...]/entity.hpp:57:33: error: type name requires a specifier or qualifier
class comparePosition = compareHorizontal< P >
^
[...]/entity.hpp:57:33: error: C++ requires a type specifier for all declarations
class comparePosition = compareHorizontal< P >
^~~~~~~~~~~~~~~~~
(以及同一行上的许多其他错误)。
如果我只是删除默认模板参数,而其他所有内容都保持不变,那么它编译得很好。所以我想知道,如果可能的话,我将如何使用函数模板作为默认参数?或者我最好只用一个operator()
调用compareHorizontal
并使用它来创建一个仿函数类?