#include <iostream>
#include <functional>

class Window
{
public:
    void ProcessMessage(std::function<int()> create, std::function<int()> update)
    {
        create();
        update();
    }
};

class App
{
private:
    Window win;

private:
    int OnUserCreate()
    {
		std::cout << "OnUserCreate() called" << std::endl;
        return 1;
    }

    int OnUserUpdate()
    {
		std::cout << "OnUserUpdate() called" << std::endl;
        return 1;
    }

public:
    void Run()
    {
        win.ProcessMessage(
        	[this](){ return this->OnUserCreate(); },
        	[this](){ return this->OnUserUpdate(); }
        );
    }
};

int main()
{
    App app;
    //while (true)
    {
        app.Run();
    }
}