<div dir="ltr">Hi all. I'm new here.<br><br>I've written a library[1] that makes it practical to write (mostly) memory safe C++ code by substituting the potentially dangerous elements of C/C++ (pointers, arrays, etc.) with fast[2] compatible memory safe replacements.<br><br>So it may perhaps now be reasonable to adopt a coding standard that bans most of the potentially unsafe elements of C/C++.<br><br>Enforcing such a ban would require a set of clang-tidy checks (or something similar) to identify any instances of potentially unsafe elements. I don't have any experience with clang-tidy development, but I imagine that such a check set should be fairly straightforward for someone that does have experience writing clang-tidy checks. I mean, they wouldn't have to do any semantic analysis or anything, they would just need to find any instances of potentially unsafe elements. And the set of potentially (memory) unsafe C/C++ elements is finite, right? Off the top of my head:<br><br>unsafe C elements:<br>pointers (including function pointers), arrays, unions, casts, a lot of standard library functions, arguably primitives that allow access to uninitialized state<br><br>unsafe C++ elements:<br>references, a bunch of the standard library elements (smart pointer implementations that allow unchecked nullptr dereferencing, unchecked container implementations), reinterpret_cast<><br><br>Am I missing anything?<br><br>As far as I know, this solution provides a degree of memory safety and performance not previously available to C/C++ developers. The next closest option would probably be building with the sanitizers turned on. While that's a more convenient solution, the results are inferior both in terms of safety and performance [3]. I'm kind of trying to sell it here because I'm hoping someone here will be convinced enough to go ahead and start implementing the checks (to identify instances of potentially unsafe elements). While I would be ready to contribute to the effort, I'm not sure I have the spare cycles (or expertise) to do it myself.<br><br>But maybe I'm getting ahead of myself. Do people even subscribe to the premise here? Would such a set of checks be accepted into clang-tidy?<br><br><br>[1] <a href="https://github.com/duneroadrunner/SaferCPlusPlus">https://github.com/duneroadrunner/SaferCPlusPlus</a><br>[2] <a href="https://github.com/duneroadrunner/SaferCPlusPlus-BenchmarksGame">https://github.com/duneroadrunner/SaferCPlusPlus-BenchmarksGame</a><br>[3] <a href="https://duneroadrunner.github.io/SaferCPlusPlus/#safercplusplus-versus-clangllvm-sanitizers">https://duneroadrunner.github.io/SaferCPlusPlus/#safercplusplus-versus-clangllvm-sanitizers</a><br><br></div>