title: Boost preprocessor skip if variadic is empty
body: <p>I have the following boost preprocessor macro to generate a function</p>
  
  <pre><code>extern "C" EXPORT out name(BOOST_PP_SEQ_FOR_EACH_I(PARAMETER_LIST, 0, BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)))
  </code></pre>
  
  <p>This works great unless if <code>__VA_ARGS__</code> is empty. After some searching I found a way to count the numer of arguments in <code>__VA_ARGS__</code> using BOOST_PP_VARIADIC_SIZE. After some thinking I wrote this MACRO:</p>
  
  <pre><code>extern "C" EXPORT out name(BOOST_PP_IF(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), BOOST_PP_SEQ_FOR_EACH_I(PARAMETER_LIST, 0, BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)), void))
  </code></pre>
  
  <p>I think this should work, however I keep getting the following warning</p>
  
  <pre><code> warning C4002: too many actual parameters for macro 'BOOST_PP_IIF_1'
  </code></pre>
  
  <p>Although this is a warning it still seems to break the preprocessor. When passing multiple arguments it will only process the first one. I find this so strange, how will adding this if break everything is such a weird way? I've checked the comma's and brackets hundred times but they seem fine. How can I fix this preprocessor?</p>
  
  <p><a href="http://www.boost.org/doc/libs/1_54_0/libs/preprocessor/doc/ref/if.html" rel="nofollow">http://www.boost.org/doc/libs/1_54_0/libs/preprocessor/doc/ref/if.html</a></p>
  
  <p>Edit: this regression seems relevant: <a href="https://svn.boost.org/trac/boost/ticket/8606" rel="nofollow">https://svn.boost.org/trac/boost/ticket/8606</a></p>