I switched from C++ to C because C++ is too complex and dealing with this complexity was stealing my time. I would not call this a "political reason".
Dealing with security issues is one of my occupations, when having a DevOps role in project delivery, and I rather use that time elsewhere.
void foo(std::vector<int> &x) { x[4] = 1; }
int main() { std::vector<int> x{ 0, 1, 3, }; foo(x); std::cout << x[4]; }
Additionally, until C++26, the way the standard is written, the legalese doesn't forbid the implementation to do bounds checking.
Now can you please enlighten us how to do the same with C arrays and strings, with bounds checking enabled, and why in 50 years WG14 has completely ignored the problem, including Dennis Ritchie proposal for fat pointers, until the government and industry pressure, and even now, I am quite curious if C2y will really bring any actual improvement.
> Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something.
Until then, the choice is pretty much between C and C++, and the latter provides a much saner and safer alternative, than a language that keeps pretending to be portable macro assembler.
Requires manual work from people willing to put into the effort, lesser development experience reading documents written for other languages, no out of the box plugins for IDEs, or graphical debuggers support, e.g. CUDA as one such example.