title: Chaining implicit conversion operators
body: <p>I've got a class which I need to implicitly convert to a few things, with intermediate values, e.g.</p>
  
  <pre><code>struct outer {
      struct inner {
          operator T() { return T(); }
      };
      operator inner() { return inner(); }
  };
  </code></pre>
  
  <p>If I have this structure, is it <em>always</em> valid to do, e.g.</p>
  
  <pre><code>void f(T t);
  outer o;
  f(o);
  </code></pre>