错误:不对应的 '运营商<'(操作数的类型是 '<悬而未决重载的函数类型>' 和 '颜色')

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是一个函数类型,但不知道你想处理的名称作为模板。因此,它将<作为小于运算符处理,导致您看到的错误。

以上是 错误:不对应的 '运营商&lt;'(操作数的类型是 '&lt;悬而未决重载的函数类型&gt;' 和 '颜色') 的全部内容, 来源链接: utcz.com/qa/258600.html

回到顶部