Implement C++ semantics for C-style and functional-style casts. This regresses Clang extension conversions, like vectors, but allows conversions via constructors and conversion operators.
Add custom conversions to static_cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77076 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/www/cxx_status.html b/www/cxx_status.html
index e6ac8ae..74edb9c 100644
--- a/www/cxx_status.html
+++ b/www/cxx_status.html
@@ -540,10 +540,10 @@
 <tr>
   <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.3 [expr.type.conv]</td>
   <td class="complete" align="center"></td>
-  <td class="complete" align="center"></td>
-  <td class="basic"></td>
+  <td class="medium" align="center"></td>
+  <td class="advanced"></td>
   <td></td>
-  <td>Only between non-class types</td>
+  <td>Allows some invalid pointer conversions, AST has little information</td>
 </tr>
 <tr>
   <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.4 [expr.pseudo]</td>
@@ -588,10 +588,10 @@
 <tr>
   <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.9 [expr.static.cast]</td>
   <td class="complete" align="center"></td>
-  <td class="complete" align="center"></td>
+  <td class="medium" align="center"></td>
   <td class="advanced" align="center"></td>
   <td></td>
-  <td>Some custom conversions don't work.</td>
+  <td>Allows some invalid pointer conversions, AST has little information</td>
 </tr>
 <tr>
   <td>&nbsp;&nbsp;&nbsp;&nbsp;5.2.10 [expr.reinterpret.cast]</td>
@@ -694,10 +694,10 @@
 <tr>
   <td>&nbsp;&nbsp;5.4 [expr.cast]</td>
   <td class="complete" align="center"></td>
-  <td class="complete" align="center"></td>
-  <td class="medium"></td>
+  <td class="medium" align="center"></td>
+  <td class="advanced"></td>
   <td></td>
-  <td>Too lenient, and may not always have correct semantics</td>
+  <td>Allows some invalid pointer conversions, AST has little information</td>
 </tr>
 <tr>
   <td>&nbsp;&nbsp;5.5 [expr.mptr.oper]</td>