# Error using std::sort with item class

**URL:** <https://discourse.cataclysmdda.org/t/error-using-std-sort-with-item-class/5884>\
**Category:** The Toolbox\
**Created:** [April 18, 2014, 8:12pm UTC](https://discourse.cataclysmdda.org/t/error-using-std-sort-with-item-class/5884 "2014-04-18T20:12:19Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mattaclysm](https://avatars.discourse-cdn.com/v4/letter/m/8e8cbc/32.png) [@Mattaclysm](https://discourse.cataclysmdda.org/u/Mattaclysm)\
**Post date:** [April 18, 2014, 8:12pm UTC](https://discourse.cataclysmdda.org/t/error-using-std-sort-with-item-class/5884/1 "2014-04-18T20:12:19Z")

</div>

I’m getting the following error when trying to sort a std::pair using a predicate. Could someone shed some light on why I’m getting this? My research on this error hasn’t come up with anything helpful.

error: no matching function for call to ‘sort(std::vector\<std::pair\<item\*, int\> \>::iterator, std::vector\<std::pair\<item\*, int\> \>::iterator, item::add\_ammo\_to\_quiver(player\*, bool)::sort\_by\_charges)’

`std::vector<std::pair<item*, int> > quivers; //stores quiver item and its max charges
//sort quivers by contents, such that empty quivers go last
        struct sort_by_charges {
            bool operator()(const std::pair<item*,int> &left, const std::pair<item*,int> &right) {
                if(left.first->contents.empty()) {
                    return true;
                } else if (right.first->contents.empty()){
                    return false;
                } else {
                    return left.first->contents[0].charges < right.first->contents[0].charges;
                }
            }
        };
        std::sort(quivers.begin(), quivers.end(), sort_by_charges());`

EDIT: [Here’s the PR](https://github.com/CleverRaven/Cataclysm-DDA/pull/7237), if you want some context.

---

<div class="post-metadata">

**Author:** ![Mattaclysm](https://avatars.discourse-cdn.com/v4/letter/m/8e8cbc/32.png) [@Mattaclysm](https://discourse.cataclysmdda.org/u/Mattaclysm)\
**Post date:** [April 18, 2014, 10:21pm UTC](https://discourse.cataclysmdda.org/t/error-using-std-sort-with-item-class/5884/2 "2014-04-18T22:21:05Z")

</div>

Nevermind, I figured it out. I had to move the struct definition outside of the function (will probably throw it in items.h).
