У меня есть unordered_set класса ActiveStatusEffect
Набор объявлен следующим образом:
boost::unordered_set<StatusEffects::ActiveStatusEffect> ActiveStatusEffects;
ActiveStatusEffect определяется следующим образом:
class ActiveStatusEffect
{
public:
StatusEffect* effect;
int ReminaingTurns;
bool operator<(const ActiveStatusEffect& ase) const
{
return *effect < *ase.effect;
}
bool operator>(const ActiveStatusEffect& ase) const
{
return *effect > *ase.effect;
}
bool operator==(const ActiveStatusEffect& ase) const
{
return *effect == *ase.effect;
}
bool operator!=(const ActiveStatusEffect& ase) const
{
return !((*this) == ase);
}
};
Сравнение StatusEffect - это сравнение уникального целого числа, присваиваемого каждому эффекту состояния.
Однако, если я попытаюсь отсортировать эффекты следующим образом:
std::sort(statusSet.begin(), statusSet.end(), [](StatusEffects::ActiveStatusEffect const &se1, StatusEffects::ActiveStatusEffect const &se2){return se1.effect->GetPriority() < se2.effect->GetPriority();});
Я получаю много ошибок в заголовочном файле алгоритма, например
Ошибка 198, ошибка C2784:
'_Base1 :: diff_type std :: operator
- (const std :: _ Revranit <_RanIt, _Base> &, const std :: _ Revranit <_RanIt2, _Base2>
&) ': не удалось вывести шаблон
аргумент для 'const
std :: _ Revranit <_RanIt, _Base> & 'from
'boost :: unordered_detail :: hash_const_iterator' c: \ program
файлы (x86) \ Microsoft Visual Studio
10,0 \ vc \ include \ алгоритма 3806
Ошибка 199, ошибка C2784:
'_Base1 :: diff_type std :: operator
- (const std :: _ Revranit <_RanIt, _Base> &, const std :: _ Revranit <_RanIt2, _Base2>
&) ': не удалось вывести шаблон
аргумент для 'const
std :: _ Revranit <_RanIt, _Base> & 'from
'boost :: unordered_detail :: hash_const_iterator' c: \ program
файлы (x86) \ Microsoft Visual Studio
10,0 \ vc \ include \ алгоритма 3806
Почему я не могу отсортировать набор? Я совершенно уверен, что это что-то в unordered_set, поскольку удаление попыток сортировки или изменения вектора не приводит к ошибкам.