I'm trying to create C# event in c++ for my game engine. I'm implementing the event system now but I don't know how to remove a std::function in a vector. Am I using the correct list?
I'm quite new in C++ but I'm a C# programmer for 10 years now. Is this possible in C++?
#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
struct Delegate {
    std::vector<std::function<void()>> funcs;
    template<class T> void operator+=(T mFunc)
    {
        funcs.push_back(mFunc);
    }
    template<class T> void operator-=(T mFunc)
    {
        // How?
        //funcs.erase(std::remove(funcs.begin(), funcs.end(), mFunc), funcs.end());
    }
    void operator()() {
        for (auto& f : funcs) f();
    }
};
void fun1()
{
    std::cout << "hello, ";
}
void fun2()
{
    std::cout << "Delete";
}
void fun3()
{
    std::cout << "world!" << std::endl;
}
int main() {
    Delegate delegate;
    delegate += fun1;
    delegate += fun2;
    delegate -= fun2;
    delegate += fun3;
    delegate();
}