title: Creating members from variadic macro arguments
body: <p>I'm attempting to create vertex structs in OpenGL by using macros to define the vertex basics and having the macro eventually generate the boilerplate code needed for use with OpenGL (<code>glGetAttribLocation</code>, <code>glEnableVertexAttribArray</code>, <code>glVertexAttribPointer</code> etc.).</p>
  
  <p>My macros are defined as such:</p>
  
  <pre><code>#define DEFINE_GPU_VERTEX_ATTRIBUTE(R, DATA, ELEM) BOOST_PP_CAT(ELEM, DATA);
  
  #define DEFINE_GPU_VERTEX(NAME, ...) struct NAME##_gpu_vertex_t \
  { \
      BOOST_PP_SEQ_FOR_EACH(DEFINE_GPU_VERTEX_ATTRIBUTE, _, __VA_ARGS__) \
  }
  </code></pre>
  
  <p>This is a sample of how I intend to use the macro:</p>
  
  <pre><code>DEFINE_GPU_VERTEX(bsp,
  ((vec3_t), position),
  ((vec3_t), normal),
  ((vec2_t), texcoord));
  </code></pre>
  
  <p>Where the first argument (<code>bsp</code>) is the name prefix, and all variadic arguments are pairs of types and names of attributes.</p>
  
  <p>I expect it to generate a struct definition like so:</p>
  
  <pre><code>struct bsp_gpu_vertex_t
  {
      vec3_t position;
      vec3_t normal;
      vec2_t texcoord;
  }
  </code></pre>
  
  <p>However, it appears to generate an empty struct.  What am I doing wrong here?</p>
  
  <p>I'm not familiar with C macros, let alone Boost macros as I've never really had reason to use them or learn what makes them tick until now.</p>
  
  <p>Any help is appreciated!</p>