У меня есть контейнер std::shared_ptr. Я хочу сравнить два контейнера, используя std::equal. В классе A определен оператор ==. Я хочу, чтобы equal сравнивал, эквивалентен ли каждый элемент, используя свой оператор ==, а не тот, который определен в shared_ptr.
Нужно ли мне сделать так, чтобы функция или объект функции передавались равными? Или есть что-то встроенное, что было бы проще (например, что-то определенное в ‹functional›)?