TL;DR
- no exceptions
- no recursion
- no malloc()/free() in the inner-loop
replies(9):
- no exceptions
- no recursion
- no malloc()/free() in the inner-loop
You can compile with exceptions enabled, use the STL, but strictly enforce no allocations after initialization. It depends on how strict is the spec you are trying to hit.
Provocative talk though, it upends one of the pillars of deeply embedded programming, at least from a size perspective.