我编写了比较器功能对象,std::map
用于比较不区分大小写的字符串。
class CaseInsensitiveCmp
{
public:
bool operator() (const std::string& op1, const std::string& op2) const
{
std::string op1low(op1.size(),'c'), op2low(op2.size(),'c');
std::transform(op1.begin(), op1.end(),op1low.begin(),::tolower);
std::transform(op2.begin(), op2.end(),op2low.begin(),::tolower);
return op1low<op2low;
}
};
问题是,如果成员函数 (operator() ) 不是 const 函数,即
bool operator() (const std::string& op1, const std::string& op2);
编译器 XLC 编译器生成 en 错误
CaseInsensitiveCmp::operator()(const std::string &, const std::string &)" is not a viable candidate.
任何人都可以参考 c++ 标准中的任何一点,即比较功能对象成员函数必须是 const 吗?