Skip to content

Instantly share code, notes, and snippets.

@Justasic
Created June 4, 2013 19:54
Show Gist options
  • Select an option

  • Save Justasic/5709013 to your computer and use it in GitHub Desktop.

Select an option

Save Justasic/5709013 to your computer and use it in GitHub Desktop.

Revisions

  1. Justin Crawford created this gist Jun 4, 2013.
    41 changes: 41 additions & 0 deletions test.cpp
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,41 @@
    #include <iostream>
    #include <functional>
    #include <queue>
    // These includes are for later experimentation
    #include <thread>
    #include <atomic>

    std::queue<std::function<void()>> funcs;


    template<typename _Callable, typename... _Args>
    void QueueFunction(_Callable&& __f, _Args&&... __args)
    {
    std::function<void()> func = std::bind(std::forward<_Callable>(__f), std::forward<_Args>(__args)...);
    funcs.push(func);
    }


    void CallFuncs()
    {
    while(!funcs.empty())
    {
    std::function<void()> func = funcs.front();
    funcs.pop();
    func();
    }
    }


    void print_things(const std::string str)
    {
    std::cout << str << std::endl;
    }

    int main()
    {
    std::string str("Hello");
    QueueFunction(print_things, str);
    CallFuncs();
    return 0;
    }