title: Preprocessor initialize array
body: <p>How, if necessary, using boost preprocessor, initialize the array as follows:</p>
  <pre><code>INIT_ARRAY(plus,minus)
  //extract to 
  std::array&lt;std::pair&lt;char const *,std::string&gt;, 2&gt; array{{
  {&quot;plus&quot;, std::string(&quot;plus&quot;)}, {&quot;minus&quot;, std::string(&quot;minus&quot;)} }};
  
  INIT_ARRAY(plus,minus,multiply)
  //extract to 
  std::array&lt;std::pair&lt;char const *,std::string&gt;, 3&gt; array{{
  {&quot;plus&quot;, std::string(&quot;plus&quot;)}, {&quot;minus&quot;, std::string(&quot;minus&quot;)}, {&quot;multiply&quot;, std::string(&quot;multiply&quot;)} }};
  </code></pre>
  <p>P.S. Couldn't solve the problem with the last comma in the initializer <code>(...{n-1} , {n} ,)</code>
  and counting the number of arguments to pass to <code>std::array&lt;...,n&gt;</code>. I use the preprocessor, since the names passed to the macro will be used later for code generation. Used c++20</p>