title: Adding const-ness to opaque handle
body: <p>If I have created a C module that presents a handle to the user with a pointer to a forward declared struct, like so:</p>
  
  <pre><code>typedef struct FOO_Obj *FOO_Handle;
  </code></pre>
  
  <p>If I then declare function prototypes that use it as a <code>const</code> qualified parameter thusly:</p>
  
  <pre><code>void FOO_work(const FOO_Handle fooHandle);
  </code></pre>
  
  <p>How is the <code>const</code>-ness applied? </p>
  
  <pre><code>const struct FOO_Obj *FOO_Handle // A
  struct FOO_Obj *const FOO_Handle  // B
  const struct FOO_Obj *const FOO_Handle  // C
  </code></pre>
  
  <p>Or is it <strong>UB</strong>?</p>