title: c++ casting a union to one of its member types
body: <p>The following seems perfectly logical to me, but isn't valid c++. A union cannot be implicitly cast to one of it's member types. Anyone know a good reason why not?</p>
  
  <pre><code>union u {
    int i;
    char c;
  }
  function f(int i) {
  }
  int main() {
    u v;
    v.i = 6;
    f(v);
  }
  </code></pre>
  
  <p>And can anyone suggest a clean alternative (the cleanest I can come up with is <code>f(v.i);</code>, which I admit is very clean, but the above just seems even cleaner)</p>