<p>I am curious as to why an implicit cast fails in...</p>

<pre><code>int? someValue = SomeCondition ? ResultOfSomeCalc() : null;
</code></pre>

<p>and why I have to perform an explicit cast instead</p>

<pre><code>int? someValue = SomeCondition ? ResultofSomeCalc() : (int?)null;
</code></pre>

<p>It seems to me that the compiler has all the information it need to make an implicit casting decision, no?</p>

The relevant section of the C# 3.0 spec is 7.13, the conditional operator:
The second and third operands of the ?: operator control the type of the conditional expression. Let X and Y be the types of the second and third operands. Then,
If X and Y are the same type, then this is the type of the conditional
Otherwise, if an implicit conversion (§6.1) exists from X to Y, but not from Y to X, then Y is the type of the conditional expression.
Otherwise, if an implicit conversion (§6.1) exists from Y to X, but not from X to Y, then X is the type of the conditional expression.
Otherwise, no expression type can be determined, and a compile-time error occurs.