<?xml version="1.0"?>
<clause number="12.3.3" title="Precise rules for determining definite assignment">
  <paragraph>In order to determine that each used variable is definitely assigned, the compiler must use a process that is equivalent to the one described in this section. </paragraph>
  <paragraph>The compiler processes the body of each function member that has one or more initially unassigned variables. For each initially unassigned variable v, the compiler determines a definite assignment state for v at each of the following points in the function member: <list><list_item> At the beginning of each statement </list_item><list_item> At the end point (<hyperlink>15.1</hyperlink>) of each statement </list_item><list_item> On each arc which transfers control to another statement or to the end point of a statement </list_item><list_item> At the beginning of each expression </list_item><list_item> At the end of each expression </list_item></list></paragraph>
  <paragraph>The definite assignment state of v can be either: <list><list_item> Definitely assigned. This indicates that on all possible control flows to this point, v has been assigned a value. </list_item><list_item> Not definitely assigned. For the state of a variable at the end of an expression of type <keyword>bool</keyword>, the state of a variable that isn't definitely assigned may (but doesn't necessarily) fall into one of the following sub-states: </list_item><list><list_item> Definitely assigned after true expression. This state indicates that v is definitely assigned if the boolean expression evaluated as true, but is not necessarily assigned if the boolean expression evaluated as false. </list_item><list_item> Definitely assigned after false expression. This state indicates that v is definitely assigned if the boolean expression evaluated as false, but is not necessarily assigned if the boolean expression evaluated as true. </list_item></list></list></paragraph>
  <paragraph>The following rules govern how the state of a variable v is determined at each location. </paragraph>
</clause>
