2016-03-03 171 views
1

在VS2015我为什么能做到这一点使用lambda函数作为比较的一个std ::地图

typedef std::pair<std::set<std::string>::const_iterator,std::set<std::string>::const_iterator> paircmpiter; 
struct PairCmp { 
    bool operator()(const paircmpiter& lhs, const paircmpiter& rhs) const { 
     return (*lhs.first + *lhs.second) < (*rhs.first + *rhs.second); 
    } 
}; 
std::map <paircmpiter,std::vector<std::pair<std::set<std::string>::const_iterator, int>>, PairCmp> markov; 

但不是这个

auto paircmp = [](const paircmpiter& lhs, const paircmpiter& rhs) { 
    return (*lhs.first + *lhs.second) < (*rhs.first + *rhs.second); 
}; 
std::map <paircmpiter,std::vector<std::pair<std::set<std::string>::const_iterator, int>>, decltype(paircmp)> markov; 

我本来期望的decltype会允许我使用lambda函数作为比较。

如何使用lambda语法使其工作?

+1

'的std ::地图 ::为const_iterator, int >>,decltype(paircmp)> markov(paircmp);' –

+0

完美谢谢。你可以把答案,所以我可以投票 – Ronnie

回答

相关问题