>foo(1,1)</code> could potentially match either <code>foo(real,real)</code>
or <code>foo(int,int)</code>. The former requires two type promotions and
the latter requires none, so <code>foo(1,1)</code> is resolved to function
<code>foo(int,int)</code> and is thus assigned the type <code>int</code>.</p>
<p>The expression <code>foo(1,1.0)</code> has argument types <code>(int,real)</code>
and thus does not explicitly match either function signature. By
promoting the integer expression <code>1</code> to type <co