title: Implicitly cast parameter to bool
body: <p><strong>Premise:</strong>
  I am trying to make a Define scope that is not implemented using a macro because of the potential issues with macros. Here is my initial attempt</p>
  
  <pre><code>//version for if not defined
  bool Defined()
  {
      return false
  }
  
  //version for if defined
  bool Defined(bool anything)
  {
      return true;
  }
  </code></pre>
  
  <p>And an example use case</p>
  
  <pre><code>if(Defined(_DEBUG))
  {
      Stuff...
  }
  </code></pre>
  
  <p>which would replace</p>
  
  <pre><code>#ifdef _DEBUG
      Stuff...
  #endif
  </code></pre>
  
  <p>or</p>
  
  <pre><code>#define Defined()         false
  #define Defined(Anything) true
  </code></pre>
  
  <p><strong>Benefits:</strong><br>
  syntax is cleaner, it is scoped, 
  <br><br>
  This code is not conditional, so the compiler will be able to easily optimize code sections out.<br><br>
  <strong>Issues</strong><br>
  There are a few issues with this procedure, the first is the reason for this post. </p>
  
  <p><strong>Question:</strong><br>
  You can't pass in anything that is not implicitly cast-able to a bool. Is there a way to implicitly cast any object, number, pointer, etc to a bool? I don't believe there is, but I wanted to make sure, before I continued.</p>