bases">Legacy codebases</h3>

<p><code>outcome</code> is useful for transporting exceptions across layers of the program that were never designed with exception safety in mind.</p>

<p>Consider a program consisting of three layers:</p>


<center><img src="../../tutorial/essential/outcome/layer_chart.gif"></center>

<p>The highest-level layer, <code>Layer3</code>, uses exceptions for signalling failures. The middle layer, <code>Layer2_old</code>,
was not designed with exception safety in mind and functions n