title: Passing BOOST_PP_DEC to another macro
body: <p>I'm trying to accomplish something like:</p>
  
  <pre><code>#define FOO( N ) Bar ## N ## _ Bar ## N - 1
  </code></pre>
  
  <p>So say <code>FOO( 2 ) = Bar2_Bar1</code></p>
  
  <p>The problem lies in the <code>N-1</code> there.  Pre-processors won't do math like this, but boost has the handy BOOST_PP_DEC macro to decrement the input.</p>
  
  <p>So if I now try the following:</p>
  
  <pre><code>#define __FOO( N, N_MINUS_ONE ) BAR ## N _ ## Bar ## N_MINUS_ONE
  #define FOO( N ) __FOO( N, BOOST_PP_DEC( N ) )
  </code></pre>
  
  <p>I would have expected that to work, but it actually pastes the macro name directly and doesn't evaluate it.</p>
  
  <p>Oddly though, if I just do:</p>
  
  <pre><code>#define TEST( N ) BOOST_PP_DEC( N )
  </code></pre>
  
  <p>It seems to work.  What am I missing here exactly?</p>