<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/75976>75976</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[libc++] Deprecate the _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES and _LIBCPP_ENABLE_CXX20_REMOVED_FEATURES macros
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc++
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
ldionne
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ldionne
</td>
</tr>
</table>
<pre>
While it is desirable to provide individual escape hatches for removed features (like `_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR`), the macros that enable all the escape hatches are undesirable.
Indeed, they make it too easy to hide issues in code when doing a transition -- for example let's say we remove C++03 feature `X` from C++23 in LLVM 18 and then want to remove C++03 feature `Y` from C++23 in LLVM 19. Anyone having defined the overall macro to re-enable all C++23 removed features will not even notice the removal, which seems bad for evolving the code base. Instead, we want people to be intentional about enabling those escape hatches.
Based on the discussion in the libc++ monthly meeting.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8U01vozAQ_TXmMgoCE5Jy4JBPqVK6rbptt3uKDJ4Eb42NbEM2_35lk35sK_WSIHv85r0385i14qgQS5IvCaWSC60UEkpJvo5Y7xptysthVGl-Ln81QiIIB8ICRysMqySC09AZPQiOIBQXg-A9k4C2Zh1Cw1zdoIWDNmCw1QNyOCBzvUELhF5J8YJAZsl-d71c3d3tNz8Wy91mv3p-Tuf7-83N7dNmvV88Ptzu7x7uySwhtCB0Ba5BaFlttAXXMAeoAhUmZbj61JwZhF69MY5JsibJYvy9VhyRXzDP0LKXoNBpDcjs2atrgjRre7QgFNSaI5waVMC1UEdg4AxTVjihFUwmQSr-ZW0nESQ6QucWLDvDCS8OwIrQJaHLJHu1wjvwTGYJHIxuX69p5rvtdk83kF4BU9wzVHBiytP7Fuv3d1hFDAt11sr7M3gBHA9CYYAHPaDxLgZzxzaTD-a-w30Z5klICUo7wAGV_xA1BshQyaS3-NSIugGL2FqoGB-tGrQMNHxt8LZiFmO4VtYhC5M54ai6Q92NC1f5XXOovOdMAqt0f1mCEUnbz0vw39CXzCIHrUJPLmzdW-unJ8YTKap6FAqtVq6RZ2gRnVDHOOJlxousYBGW6TzJEppn6TRqyqxO86s0qesqmaYFLeaczqdFhpwW0wNWGImSJjRLaVpQmuXpNOZ5VhWY1odZTgs6S8g0wZYJGUs5tLE2xyjsXDnPi_kskqxCaV-j-kbwklZT-keTqj9aMk2ksM6-wzjhZAj5h2f5GtbYGayZG6f0bQC3m8XD4_3mZ9jCr5U0-Vo5pjPqjSwb5zpLsgWhW0K3R-Gavopr3RK69Rwvf5PO6D9YO0K3Y9YI3Qbp_wIAAP__e7KEfQ">