#include #include #include // These includes are for later experimentation #include #include std::queue> funcs; template void QueueFunction(_Callable&& __f, _Args&&... __args) { std::function func = std::bind(std::forward<_Callable>(__f), std::forward<_Args>(__args)...); funcs.push(func); } void CallFuncs() { while(!funcs.empty()) { std::function 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; }