title: Confused by use of double logical not (!!) operator
body: <p>I have some C++ code that makes extensive use of <code>!!</code>. I'm kinda baffled because as far as I know <code>!!</code> is not a operator on it's own but two <code>!</code> after each other. So that would mean that <code>!!foo</code> is the same as just <code>foo</code>.</p>
  
  <p>Is there any place and or reason when <code>!!</code> actually makes sense? I was thinking about if it could perhaps have a bit wise meaning? So you first perform some bit wise operation on <code>foo</code> and then <code>!</code> on the result? But I don't seem to remember <code>!</code> being used as a bit wise operator and don't seem to find any reference telling me it is either. As far as I can tell <code>!</code> in only used as a logical operator and in that case </p>
  
  <p><code>!!foo == foo</code></p>