title: inline function with empty parameter
body: <p>I'm studying on Boost library. Can someone help me understand below code.</p>
  <pre><code>/*!
      \fn ForwardIterator uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator dest)
      \brief Equivalent of &lt;code&gt;std::uninitialized_copy&lt;/code&gt; but with explicit specification of value type.
  */
  template&lt;class InputIterator, class ForwardIterator, class Alloc&gt;
  inline ForwardIterator uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator dest, Alloc&amp; a) 
  {
      ForwardIterator next = dest;
      BOOST_TRY {
          for (; first != last; ++first, ++dest)
              boost::allocator_construct(a, boost::to_address(dest), *first);
      } BOOST_CATCH(...) {
          for (; next != dest; ++next)
              boost::allocator_destroy(a, boost::to_address(next));
          BOOST_RETHROW
      }
      BOOST_CATCH_END
      return dest;
  }
  </code></pre>
  <p>and the function <strong>allocator_construct</strong> as below:</p>
  <pre><code>template&lt;class A, class T, class V&gt;
  inline void allocator_construct(A&amp;, T* p, const V&amp; v)
  {
      ::new((void*)p) T(v);
  }
  </code></pre>
  <ul>
  <li>Can some one help to understand the purpose of calling <code>boost::allocator_construct(a, boost::to_address(dest), *first);</code> in <em><strong>unitialized_copy</strong></em> and why the function author trying to leave empty param at first param <code>A&amp;</code> in <code>allocator_construct</code>.</li>
  </ul>
  <p>Thanks for your help.</p>