title: Cast `size_t[]` to `char *` without C-style casting or `reinterpret_cast`
body: <p>In order to count the set bits in a <code>size_t[n]</code>, I've created a <code>LUT[256]</code> with pre-calculated number of set bits per a single byte.</p>
  <p>To use <code>std::accumulate</code> and iterate over each byte in a <code>const size_t[n]</code>, casting to <code>const char *</code> is required.</p>
  <p>In <code>C</code>, <code>(const char *)arrSizet</code> would work.
  In <code>C++</code> I could use one the following options:</p>
  <ol>
  <li><code>reinterpret_cast&lt;const char *&gt;(arrSizet)</code></li>
  <li><code>char arrChar[BYTES_IN_SIZET_ARR]; memcpy(arrChar, arrSizet, BYTES_IN_SIZET_ARR);</code></li>
  </ol>
  <p><code>C</code> style cast or using <code>reinterpret_cast</code> (1) should generally be avoided if possible.<br />
  While (2) copies the array unnecessarily.</p>
  <p>So is there any better approach to get this done? Perhaps a way to sent bytes array to <code>std::accumulate</code> without any casting?</p>