title: Prevent silent cast from false to pointer
body: <p>I have a function </p>
  
  <pre><code>void foo(int *bar)
  {}
  </code></pre>
  
  <p>Visual Studio 2012 will now happily and without warnings compile if I call foo like this:</p>
  
  <pre><code>int main()
  {
    foo(false);
    return 0;
  }
  </code></pre>
  
  <p>If I however change foo(false) to foo(true) than I get an error:</p>
  
  <pre><code>1&gt;main.cpp(132): error C2664: 'foo' : cannot convert parameter 1 from 'bool' to 'int *'
  1&gt;          Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
  </code></pre>
  
  <p>Any idea how I can make sure that I get an error when passing false, too? My only idea is to add a second private function "void foo(bool bar)". Then I indeed get the desired error stating that foo(bool bar) is private. But this only works when foo is called from outside the class and it clutters my interface.</p>