jeudi 29 octobre 2015

Modify std::less on a shared_ptr

This is what I have:

struct Foo {
  int index;
}
std::set<std::shared_ptr<Foo>> bar;

I want to order bar's elements by their indices instead of by the default std::less<std::shared_ptr<T>> function, which relates the pointers.

I read I can type std::set<std::shared_ptr<Foo>, std::owner_less<std::shared_ptr<Foo>>> bar, but I'd prefer to stick to the previous syntax.

I tried defining std::less<std::shared_ptr<Foo>>, but it's not actually being used by the set functions. Is there a way I can achieve this?

Aucun commentaire:

Enregistrer un commentaire