I've been coding in C++ on and off for 25 years, with my last serious project wrapping up in 2019. I'm looking to break into software positions in Big Tech or the EDA industry and know that C++ has had several updates like C++14, C++17, C++20, and the soon-to-be C++23. I'm currently only familiar with up to C++11. Can anyone share insights on which versions are most commonly used by major companies today?
5 Answers
For new work, don’t go below C++17. C++20 has some fantastic features like concepts and named initializers, which can really simplify your code. Plus, if you're looking at safety standards like MISRA C++:2023, they assume you're working with C++17, so it's something to keep in mind.
If you’re diving into the industry, C++20 is great for modern development, but you’ll find codebases still hanging around from C++11 to C++17. Just getting comfy with C++11 features will give you a solid foundation before branching into the new stuff.
Definitely focus on C++11 at the very least since it introduced crucial concepts like memory safety and move semantics. Many projects have evolved from C++11 to 17, and understanding that transition will help you adapt to newer codebases more easily.
From my experience, it really depends on the team and project. Most projects start using features from newer C++ versions once they're stable and supported across all necessary toolchains. Many of them are still using C++20, which has been stable for a while. C++23 isn't widely adopted yet since compilers have incomplete support. It's also common to find legacy code written in older styles that hasn’t changed in ages.
Honestly, it's hard to say since it often depends on when most projects launched. But I can tell you that historically, many projects were built with tools like Watcom C++. These days, sticking with at least C++17 is a safe bet, especially for new projects. Features like `if constexpr` are game-changers!
Right? C++20 really ups the game with type deductions and templates. It’s like a whole new language compared to C++98.