при компиляции функции-члена шаблона класса 'void std :: list <_Ty> :: remove (const _Ty &)'
с [_Ty = ServerLoginResponseCallback]
Вы создаете экземпляр std::list<std::function<void (ServerLoginResponsePtr)>>
и пытаетесь вызвать erase
для него, и это зависит от вызова operator==
для двух std::function
объектов, но std::function
s не сопоставимы (только с nullptr
) :
§20.8.14.2 [func.wrap.func] (из окончательного варианта проекта n3092):
Функции-члены:
// deleted overloads close possible hole in the type system
template<class R2, class... ArgTypes2>
bool operator==(const function<R2(ArgTypes2...)>&) = delete;
template<class R2, class... ArgTypes2>
bool operator!=(const function<R2(ArgTypes2...)>&) = delete;
Это бесплатные функции:
template<class R, class... ArgTypes>
bool operator==(const function<R(ArgTypes...)>&, nullptr_t);
template<class R, class... ArgTypes>
bool operator==(nullptr_t, const function<R(ArgTypes...)>&);