In VS2015 why can I do this
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;
but not this
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;
I would have expected the decltype would allow me to use lamda functions as a comparison.
How do I make it work using the lambda syntax?
Aucun commentaire:
Enregistrer un commentaire