错误:不对应的 '运营商<'(操作数的类型是 '<悬而未决重载的函数类型>' 和 '颜色')
namespace { template<GenT GT, PieceT PT>
// Move Generator for PIECE
struct Generator
{
public:
template<Color C>
static INLINE void generate (ValMove *&m_list, const Position &pos, Bitboard targets, const CheckInfo *ci = NULL)
{
}
};
template<GenT GT>
// Move Generator for KING
struct Generator<GT, KING>
{
public:
template<CSide SIDE, bool CHESS960>
static INLINE void generate_castling (ValMove *&m_list, const Position &pos, Color C, const CheckInfo *ci /*= NULL*/)
{
}
template<Color C>
static INLINE void generate (ValMove *&m_list, const Position &pos, Bitboard targets, const CheckInfo *ci = NULL)
{
}
};
template<GenT GT>
// Move Generator for PAWN
struct Generator<GT, PAWN>
{
public:
template<Delta D>
// Generates PAWN promotion move
static INLINE void generate_promotion (ValMove *&m_list, Bitboard pawns_on_R7, Bitboard targets, const CheckInfo *ci)
{
}
template<Color C>
static INLINE void generate (ValMove *&m_list, const Position &pos, Bitboard targets, const CheckInfo *ci = NULL)
{
}
};
template<Color C, GenT GT>
// Generates all pseudo-legal moves of color for targets.
INLINE ValMove* generate_moves (ValMove *&m_list, const Position &pos, Bitboard targets, const CheckInfo *ci = NULL)
{
// ERROR :: generate<C>
// error: no match for 'operator<' (operand types are '<unresolved overloaded function type>' and 'Color'
// for ALL CALLS TO generate<C>
Generator<GT, PAWN>::generate<C> (m_list, pos, targets, ci);
Generator<GT, NIHT>::generate<C> (m_list, pos, targets, ci);
Generator<GT, BSHP>::generate<C> (m_list, pos, targets, ci);
Generator<GT, ROOK>::generate<C> (m_list, pos, targets, ci);
Generator<GT, QUEN>::generate<C> (m_list, pos, targets, ci);
if (EVASION != GT)
{
Generator<GT, KING>::generate<C> (m_list, pos, targets, ci);
}
return m_list;
}
}
make.exe -f MakeFile build ARCH=x86-32 COMP=mingw
为什么这个错误?我正在用minGW编译。错误:不对应的 '运营商<'(操作数的类型是 '<悬而未决重载的函数类型>' 和 '颜色')
error: no match for 'operator<' (operand types are '<unresolved overloaded function type>' and 'Color'
请解释一下,我在这里提供了完整的代码。
回答:
在您的generate_moves
函数中generate
之前加上template
。例如:
Generator<GT, PAWN>::template generate<C> (m_list, pos, targets, ci);
编译器识别的generate
是一个函数类型,但不知道你想处理的名称作为模板。因此,它将<
作为小于运算符处理,导致您看到的错误。
以上是 错误:不对应的 '运营商<'(操作数的类型是 '<悬而未决重载的函数类型>' 和 '颜色') 的全部内容, 来源链接: utcz.com/qa/258600.html