我想使用boost :: multi_index :: identity作为我的类指针。因此,我需要一个模板专门化来比较我的类的比较运算符(小于<)。这是我的代码:
class X {
// class declarations details
};
template <>
bool operator< <X> ( const X* ipLhs, const X* ipRhs)
{
return ((unsigned int) ipLhs) < (unsigned int) ipRhs);
}
因此我可以将boost :: multi_index_container声明为
typedef boost::multi_index_container
< X*
, boost::multi_index::identity<X*>
> SetOfXs;
不幸的是,它在VC8中产生了一个错误
error C2143: syntax error : missing ';' before '<'
您能否帮助我使用正确的语法为比较运算符(小于)重载声明模板特化?
非常感谢!
答案 0 :(得分:1)
不,你不能,因为operator <
根本不是模板功能。重载将是最佳解决方案:
bool operator< (const X& ipLhs, const X& ipRhs)
{
...
}
如果您的意思是std::less,您可以对其进行专门化,但请注意它是模板类。