title: When should static_cast, dynamic_cast, const_cast, and reinterpret_cast be used?
body: <p>What are the proper uses of:</p>
  <ul>
  <li><a href="https://en.cppreference.com/w/cpp/language/static_cast" rel="noreferrer"><code>static_cast</code></a></li>
  <li><a href="https://en.cppreference.com/w/cpp/language/dynamic_cast" rel="noreferrer"><code>dynamic_cast</code></a></li>
  <li><a href="https://en.cppreference.com/w/cpp/language/const_cast" rel="noreferrer"><code>const_cast</code></a></li>
  <li><a href="https://en.cppreference.com/w/cpp/language/reinterpret_cast" rel="noreferrer"><code>reinterpret_cast</code></a></li>
  <li><a href="https://en.cppreference.com/w/cpp/language/explicit_cast" rel="noreferrer"><code>(type)value</code></a> (C-style cast)</li>
  <li><a href="https://en.cppreference.com/w/cpp/language/explicit_cast" rel="noreferrer"><code>type(value)</code></a> (function-style cast)</li>
  </ul>
  <p>How does one decide which to use in which specific cases?</p>