Как описано в другом моем сообщении , невозможно сравнить 2 указателя на функции-члены с "<" (меньше) </strong>. Или, по крайней мере, это вызывает неопределенное поведение.
Мне только что удалось скомпилировать этот код как с Visual C ++, так и с GCC:
template <class Receiver, class Param = void*, class Return = void>
class EventReceiver : public IFunction<> {
protected:
std::set< Return(Receiver::*)(Param) > test;
std::set< Return(*)(Param) > test2;
...
AFAIK, чтобы сделать std :: map или std :: set из чего-либо, должна быть возможность сравнить значения набора с "<". Означает ли это, что вышеупомянутые контейнеры или фактические компиляторы имеют работающую реализацию для сравнения указателей на методы таким образом? </p>