multiset 自定义比较函数

2017-03-13  本文已影响0人  依杖听江声
#include <string>
#include <iostream>
#include <set>
#include <memory>

using std::shared_ptr;
using std::multiset;
using std::string;
using std::cout;
using std::endl;

class MS{
    bool compareIsbn(const shared_ptr<string> &lhs,const shared_ptr<string> &rhs)
    {
        return *lhs < *rhs;
    }
    multiset<shared_ptr<string>, decltype(compareIsbn)*> item(compareIsbn);
};
int main(){ MS bbb;} 

上面这一段代码在g++ 和 vs2015下都无法编译,错误提示为:

error:compareIsbn 不是类型名

调试了几个小时,推测有两个主要的原因:

static bool compareIsbn(const shared_ptr<string> &lhs,const shared_ptr<string> &rhs)
    {
        return *lhs < *rhs;
    }
multiset<shared_ptr<string>, decltype(compareIsbn)*> item{compareIsbn};
上一篇下一篇

猜你喜欢

热点阅读