...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
A coroutine uses internally a context which manages a set of registers and a stack. The memory used by the stack is allocated/deallocated via a stack-allocator which is required to model a stack-allocator concept.
A stack-allocator must satisfy the stack-allocator
concept requirements shown in the following table, in which a
is an object of a stack-allocator
type, sctx
is a stack_context
, and size
is a std::size_t
:
expression |
return type |
notes |
---|---|---|
|
|
creates a stack of at least |
|
|
deallocates the stack created by |
Important | |
---|---|
The implementation of |
Important | |
---|---|
Calling |
Note | |
---|---|
The stack is not required to be aligned; alignment takes place inside coroutine. |
Note | |
---|---|
Depending on the architecture |
class stack_allocator is a typedef of standard_stack_allocator.