Dato il seguente codice:

codice:
switch( n )
{
     case 5:
	n = 5+2;
	break;

    case 6:
	n = 6+2;
	break;



     default:
	__assume( 0 );
}

Quali sono le funzionalità di __assume ?

Da MSDN vengo a conoscenza di quanto segue:
"The use of assume(0) tells the optimizer that the default case cannot be reached. As a result, the compiler does not generate code to test whether p has a value not represented in a case statement. Note that assume(0) must be the first statement in the body of the default case for this to work.

Because the compiler generates code based on __assume, that code might not run correctly if the expression inside the __assume statement is false at run time."

Ma qual'è la relazione che lega la seconda frase alla prima?

In particolare nel codice (di esempio) da me riportato se l'espressione è false ( __assume( false ) ) e se n, prima dello switch, è diversa sia da 5 che da 6, effettuando il debug si vede come il flusso entri nello switch e in particolare esegua le istruzioni del primo case, qualunque esso sia.

Se invece l'espressione è true ( __assume( true ) ) l'applicazione si comporta (o cosi sembra) come è riportato da MSDN.

Delucidazioni?