title: C++ function argument safety
body: <p>In a function that takes several arguments of the same type, how can we guarantee that the caller doesn't mess up the ordering?</p>
  
  <p>For example</p>
  
  <pre><code>void allocate_things(int num_buffers, int pages_per_buffer, int default_value ...
  </code></pre>
  
  <p>and later</p>
  
  <pre><code>// uhmm.. lets see which was which uhh..
  allocate_things(40,22,80,...
  </code></pre>