title: Boost program options with default values always present when using vm.count()
body: <p>I've been trying to validate my passed options with boost::program_options.  My command has several modes, each of which have associated params that can be specified.  What I'm trying to do is ensure these associated params are passed with the mode, i.e.</p>
  
  <pre><code>unicorn --fly --magic-wings-threshold
  </code></pre>
  
  <p>Where <code>--fly</code> is the mode and <code>--magic-wings-threshold</code> is an associated param.  What I've noticed is if <code>--magic-wings-threshold</code> has a default value, e.g.</p>
  
  <pre><code>("magic-wings-threshold,w", po::value&lt;double&gt;(&amp;wings_thresh)-&gt;default_value(0.8, "0.8"),
             "Magic wings maximum power"
  )
  </code></pre>
  
  <p>then I can't use </p>
  
  <pre><code>if (vm.count("magic-wings-threshold")( {
      // do stuff
  }
  </code></pre>
  
  <p>to detect if the user passed that param.  </p>
  
  <p>It appears that default value params are always passed and detected in <code>vm.count()</code>.  Does anyone know a workaround or alternative?</p>