163a164,167
> * The optional second boolean argument controls if the Coroutine
> * should be run on creation, which mimics Boost's Coroutine
> * semantics by default. This can be disabled as an optimization to
> * avoid unnecessary context switches on Coroutine creation.
165a170,171
> * @param run_coroutine set to false to disable running the coroutine
> * immediately after it is created
167c173
< Coroutine(std::function<void(CallerType&)> f)
---
> Coroutine(std::function<void(CallerType&)> f, bool run_coroutine = true)
170,171c176,178
< // Create and Run the Coroutine
< this->call();
---
> // When desired, run the Coroutine after it is created
> if (run_coroutine)
> this->call();