title: Are there any C++ tools that detect misuse of static_cast, dynamic_cast, and reinterpret_cast?
body: <p>The answers to the following question describe the recommended usage of <code>static_cast</code>, <code>dynamic_cast</code>, and <code>reinterpret_cast</code> in C++:</p>
  
  <p><a href="https://stackoverflow.com/questions/332030/when-should-static-cast-dynamic-cast-and-reinterpret-cast-be-used">When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?</a></p>
  
  <p>Do you know of any tools that can be used to detect misuse of these kinds of cast? Would a static analysis tool like PC-Lint or Coverity Static Analysis do this?</p>
  
  <p>The particular case that prompted this question was the inappropriate use of <code>static_cast</code> to downcast a pointer, which the compiler does not warn about. I'd like to detect this case using a tool, and not assume that developers will never make this mistake.</p>